import datetime
import json
from glob import glob

from django.core.files import File
from django.http import HttpResponse

from mysite import settings
from .models import User
import re
from django.http.response import JsonResponse
from django.views.decorators.csrf import csrf_exempt, csrf_protect
import hashlib
import os
import subprocess


def createDirFile(request):

    # 创建类型
    type  = request.GET.get("type")
    # 路径
    path = request.GET.get("path")
    path = path.replace('//', '/')

    # 名称
    name = request.GET.get("name")

    file_path = path + "/" + name

    print("------------------path-----------------")
    print(file_path)
    try:
        if type == "dir":
            # 文件夹
            if not os.path.exists(file_path):  # 文件夹不存在则创建
                os.mkdir(file_path)
                return JsonResponse({'status': 200, 'msg': '创建文件夹成功！'}, json_dumps_params={"ensure_ascii": False}, safe=False)


        else:
            # 文件
            if not os.path.exists(file_path):
                with open(file_path, 'w') as file:
                    file.write('')
                    file.closed
                    return JsonResponse({'status': True, 'msg': '创建文件成功！'}, json_dumps_params={"ensure_ascii": False}, safe=False)
    except Exception as e:

        return JsonResponse({'status': True, 'msg': e}, json_dumps_params={"ensure_ascii": False}, safe=False)




@csrf_exempt
def uploadFiles(request):
    """
    文件上传功能
    @param request:
    @return:
    """
    try:
        # 获取文件内容
        file = request.FILES.get('file', '')

        # 文件存储路径
        save_path = request.POST["path"]

        file_path =  save_path  #保存全路径
        if not os.path.exists(file_path):  # 文件夹不存在则创建
            os.mkdir(file_path)
        # 写入文件
        with open(os.path.join(file_path, file.name), 'wb') as fp:  # 写文件
            for i in file.chunks():
                fp.write(i)
    except Exception as e:
        return JsonResponse({'status': False, 'msg': u'错误：{}'.format(e)})

    return JsonResponse({'status': True, 'msg': '上传成功！'}, json_dumps_params={"ensure_ascii": False}, safe=False)


def get_file_obj(current_path):
    """
    获取用户文件系统目录
    @param current_path: 所要遍历的目录
    @return:
    """
    # 存储文件目录对象树
    file_tree_obj = {}
    # 遍历文件下面的文件和目录
    current_address = os.path.dirname(os.path.abspath(current_path))

    # 总文件对象树
    ast_tree_obj = {
        "user": "用户名",
        "file":[]
    }

    i = 0
    for parent, dirnames, filenames in os.walk(current_address):
        """
        注释：每一层目录遍历一个对象: [{}]
        """
        item  =  {
          "tree": i,
          "name": "第{0}层数".format(i),
          "dir": parent,
          "data": []
        }

        item_data = []  #存储每一层目录下的文件或目录

        #参数封装
        print("--------{0}----------")
        # Case1: 遍历目录
        for dirname in dirnames:

            info = os.stat("{0}/{1}".format(parent, dirname))

            print("---------------len-------------------")
            print(dirnames)
            # 起始对象树
            item_data_item = {
                  "name": dirname,
                  "type": "dir",
                  "path": parent,
                  "size": info.st_size,
                  "time": datetime.datetime.fromtimestamp(info.st_ctime),
                  "updateTime": datetime.datetime.fromtimestamp(info.st_mtime),
                  "dir_count": len(dirnames),
                  "file_count": len(filenames),
                  "permission": info.st_mode,
            }

            item_data.append(item_data_item)

        # Case2: 遍历文件
        for filename in filenames:

            info = os.stat("{0}/{1}".format(parent, filename))
            # 起始对象树
            item_data_item = {
                  "name": filename,
                  "type": "file",
                  "path": parent,
                  "size": info.st_size,
                  "time": datetime.datetime.fromtimestamp(info.st_ctime),
                  "updateTime": datetime.datetime.fromtimestamp(info.st_mtime),
                  "dir_count": len(dirnames),
                  "file_count": len(filenames),
                  "permission": info.st_mode,
            }

            item_data.append(item_data_item)

        item["data"].append(item_data)
        ast_tree_obj["file"].append(item)

        i+=1

    # 转化为AST格式
    ast = ast_tree_obj(ast_tree_obj)

    return ast



@csrf_exempt
def saveFileContent(request):

    # 路径
    data = json.loads(request.body)

    # 路径
    path = data["path"]
    # 文件名
    name =  data["name"]
    # 内容
    content = data["content"]

    # print("path={0}".format(path))
    # print("name={0}".format(name))
    # print("content={0}".format(content))

    print("-----======----------")
    print(settings.BASE_DIR)

    filename = "{0}/{1}{2}".format(settings.BASE_DIR,path, name)

    print("-----======filename----------")

    print(filename)
    with open(filename, 'w') as f:
        myfile = File(f)
        myfile.write(content)
    myfile.closed

    res = {
        "code":200,
        "msg": "文件保存成功！"
    }

    data = JsonResponse(res, json_dumps_params={"ensure_ascii": False}, safe=False)

    return HttpResponse(data)



def getFileContent(request):
    """
    读取文件内容
    @param request:
    @return:
    """
    path =       request.GET.get("path")
    file_name =  request.GET.get("name")

    # 文件路径
    file_path = "{0}/{1}".format(path, file_name)

    # 读取文件
    with open(file_path, 'r') as f:
        content = f.read()

    # 返回数据
    res = {
        "code": 200,
        "content":content
    }

    data = JsonResponse(res, json_dumps_params={"ensure_ascii": False}, safe=False)

    return HttpResponse(data)


def getIconClass(file_name):
    """
    根据文件类型设置样式图标类名
    @param file_name:   文件名
    @return: className  返回图标类名
    """

    # 切割文件名
    file_type = file_name.split(".")[-1]

    # 文件类型列表
    icon_class = [
        {
            "type": [''],
            "desc": "无后缀的文件",
            "class": ['''
            <svg t="1661221831918" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4129" width="200" height="200"><path d="M735.48 881.936H291.888c-54.448 0-98.584-44.144-98.584-98.576V241.168c0-54.448 44.136-98.584 98.584-98.584H608.88c8.536-1.608 17.6 0.4 24.192 7l192.264 192.288c4.28 4.264 6.768 9.608 7.576 15.16 0.752 2.32 1.112 4.808 1.112 7.368v418.96c0.024 54.424-44.072 98.552-98.496 98.576h-0.048z m-98.592-651.6v109.416h109.424L636.888 230.336zM784.784 389.04H612.264a24.664 24.664 0 0 1-24.656-24.648V191.872H291.888a49.288 49.288 0 0 0-49.288 49.288V783.36c0 27.2 22.056 49.264 49.272 49.264h443.584a49.296 49.296 0 0 0 49.304-49.264V389.04h0.024z" p-id="4130"></path></svg>
            '''],
        },
        {
            "type": ['doc','docx'],
            "desc": "doc，docx文件",
            "class": [
            '''
            <svg t="1661222189243" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5064" width="200" height="200"><path d="M967.111111 281.6V910.222222c0 62.577778-51.2 113.777778-113.777778 113.777778H170.666667c-62.577778 0-113.777778-51.2-113.777778-113.777778V113.777778c0-62.577778 51.2-113.777778 113.777778-113.777778h514.844444L967.111111 281.6z" fill="#4F6BF6" p-id="5065"></path><path d="M581.262222 755.626667h59.363556L739.555556 439.04h-59.335112z" fill="#FFFFFF" p-id="5066"></path><path d="M685.511111 224.711111V0L967.111111 281.6H742.4c-31.288889 0-56.888889-25.6-56.888889-56.888889" fill="#243EBB" p-id="5067"></path><path d="M640.625778 755.626667h-59.363556l-98.929778-277.020445h59.335112zM442.737778 755.626667h-59.363556L284.444444 439.04h59.335112z" fill="#FFFFFF" p-id="5068"></path><path d="M383.374222 755.626667h59.363556l98.929778-277.020445h-59.335112z" fill="#FFFFFF" p-id="5069"></path></svg>
            ''',
            '''
            <svg t="1661222189243" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5064" width="200" height="200"><path d="M967.111111 281.6V910.222222c0 62.577778-51.2 113.777778-113.777778 113.777778H170.666667c-62.577778 0-113.777778-51.2-113.777778-113.777778V113.777778c0-62.577778 51.2-113.777778 113.777778-113.777778h514.844444L967.111111 281.6z" fill="#4F6BF6" p-id="5065"></path><path d="M581.262222 755.626667h59.363556L739.555556 439.04h-59.335112z" fill="#FFFFFF" p-id="5066"></path><path d="M685.511111 224.711111V0L967.111111 281.6H742.4c-31.288889 0-56.888889-25.6-56.888889-56.888889" fill="#243EBB" p-id="5067"></path><path d="M640.625778 755.626667h-59.363556l-98.929778-277.020445h59.335112zM442.737778 755.626667h-59.363556L284.444444 439.04h59.335112z" fill="#FFFFFF" p-id="5068"></path><path d="M383.374222 755.626667h59.363556l98.929778-277.020445h-59.335112z" fill="#FFFFFF" p-id="5069"></path></svg>
            '''],
        },
        {
            "type": ['pdf','md','json', 'xml'],
            "desc": "pdf文件",
            "class": [
                '''
                <svg t="1661222083599" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4908" width="200" height="200"><path d="M145.621959 0c-44.79888 0-79.998 36.81188-79.998 81.61076v860.77848c0 44.79888 35.19912 81.61076 79.998 81.61076h732.781681a81.969151 81.969151 0 0 0 81.61076-81.61076V324.80468L657.60916 0h-511.987201z" fill="#F05542" p-id="4909"></path><path d="M657.60916 0v233.59416c0 25.59936 17.61236 92.79768 97.61036 92.79768h204.79488L657.60916 0z" fill="#FFFFFF" p-id="4910"></path><path d="M226.208745 708.129497c0.40959-1.791955 0.972776-3.507112 1.715157-5.094273L230.40704 697.633759a99.530312 99.530312 0 0 0 5.836654-17.381965l5.862253-24.0122a2497.98555 2497.98555 0 0 1 9.59976-38.245444c1.61276-6.092648 3.532712-12.466888 5.785456-19.122722l7.039824-20.633084 7.423814-21.887453c2.508737-7.475013 4.761481-15.257219 6.758231-23.244219a3.839904 3.839904 0 0 0 0.153596-1.20317c0-0.79358-0.255994-1.305567-0.742381-1.510362s-1.151971-0.307192-1.945551-0.307192c-2.508737 0-4.582285-0.38399-6.220645-1.126372a10.188545 10.188545 0 0 1-5.913452-7.039824 29.18327 29.18327 0 0 1 0.998375-15.436414c1.049574-2.636734 2.40634-4.710282 4.044699-6.143846s3.455914-2.508737 5.401465-3.148722 3.839904-1.177571 5.708657-1.58716 3.481513-0.81918 4.863878-1.279968 2.40634-1.279968 2.995126-2.483138c0.998375-2.099148 1.919952-4.326292 2.76473-6.681433s1.919952-4.531087 3.22552-6.527837 2.892728-3.660708 4.81268-4.940676 4.40309-1.945551 7.500612-1.945552c2.201545 0 4.147096 0.588785 5.862253 1.791956s3.174321 2.687933 4.42869 4.505487 2.329542 3.737507 3.225519 5.785455l2.40634 5.63186a310.00825 310.00825 0 0 1 43.800505 4.198295c7.500612 1.407965 15.026824 3.507112 22.578635 6.297442s14.361241 6.425439 20.40269 10.879728 11.007725 9.702157 14.847629 15.743607 5.785455 12.978876 5.785456 20.78668c0 3.9935-0.460788 8.140596-1.356767 12.441289l-1.049573 5.247869c-0.79358 4.198295-2.483138 8.089398-5.017475 11.698907s-5.427064 6.860628-8.626984 9.753356c-8.908577 8.191795-18.661933 15.078023-29.260069 20.633084s-21.657059 10.214145-33.151171 14.02845-23.244219 6.988625-35.250319 9.59976-23.858604 5.043074-35.557511 7.347016l-4.198295 0.588785c-2.303942 0.307192-3.660708 1.151971-4.044699 2.559936-1.99675 6.911827-3.58391 12.953276-4.735881 18.149947s-2.227144 10.162946-3.22552 14.924427l-2.995125 14.258843c-0.998375 4.761481-2.252744 10.034949-3.737506 15.820405-0.511987 1.894353-1.407965 4.147096-2.687933 6.758231s-2.841529 5.043074-4.659084 7.347016-3.865503 4.275093-6.220644 5.913452-4.81268 2.483138-7.423814 2.483138c-1.791955 0-3.353516-0.511987-4.659084-1.510362s-2.38074-2.278343-3.225519-3.814305-1.510362-3.225519-1.945552-5.017474-0.665583-3.507112-0.665583-5.094273v-1.715157c0-0.537587 0-1.126372 0.204795-1.638359z m59.544111-110.845229l-0.819179 2.636734a73.828554 73.828554 0 0 0-1.715157 6.451039 11.007725 11.007725 0 0 0-0.307193 2.022349c0 0.511987 0.076798 0.921577 0.230394 1.279968s0.486388 0.537587 0.972776 0.537587c0.307192 0 1.254369-0.127997 2.841529-0.383991s3.532712-0.563186 5.785455-0.972775 4.684683-0.844779 7.270219-1.356766 5.094273-0.998375 7.500612-1.510363a343.159421 343.159421 0 0 0 42.955726-12.594885c7.347016-2.687933 14.38684-5.60626 21.068274-8.703782s12.646084-6.39984 17.842754-9.906953c5.503862-3.711907 9.906952-7.398215 13.209269-11.110122s4.940676-7.654209 4.940677-11.852503c0-2.508737-0.332792-4.735882-0.972776-6.681433s-1.382365-3.737507-2.175946-5.324667c-2.995125-4.889478-6.758231-8.754981-11.238119-11.545312s-9.394965-4.889478-14.694032-6.297442-10.854129-2.303942-16.639584-2.687933-11.494113-0.588785-17.100373-0.588785c-1.510362 0-3.763106 0.102397-6.835029 0.307192s-6.246244 0.460788-9.59976 0.742381-6.451039 0.665583-9.292568 1.126372-4.78708 0.972776-5.785455 1.587161c-0.511987 0.307192-0.921577 0.79358-1.279968 1.510362s-0.614385 1.305567-0.819179 1.791955l-3.302318 8.319792c-1.407965 3.532712-2.892728 7.526212-4.505487 11.929302s-3.276718 9.062173-5.017475 13.951651-3.430314 9.676558-5.017474 14.335642l-4.42869 13.055673a167.59901 167.59901 0 0 0-3.071923 9.932552zM421.045474 692.693083c4.607885-3.302317 9.266968-5.375866 14.028449-6.220645s9.778956-1.535962 15.078023-2.022349l37.503063-151.804205-3.379116-0.076798c-1.843154-0.051199-3.891103-0.204795-6.143846-0.460789s-4.479888-0.665583-6.681433-1.279968-3.839904-1.459164-4.940677-2.559936a54.552236 54.552236 0 0 1-4.044699-6.502237c-0.691183-1.331167-1.305567-2.713532-1.791955-4.121497s-0.742381-2.79033-0.742381-4.198295c0-2.303942 0.972776-4.223894 2.918327-5.785456s4.351891-2.79033 7.19342-3.737506 5.913452-1.61276 9.21577-2.02235 6.297443-0.588785 9.010974-0.588785c12.594885 0 24.268193 0.38399 35.019925 1.126372s20.81228 2.38074 30.156046 4.863878 18.149946 6.041449 26.39294 10.649334 16.127597 10.751731 23.628209 18.457139c2.79033 2.892728 5.478263 6.143846 8.0126 9.753356a74.238144 74.238144 0 0 1 11.494113 25.420164c1.20317 4.838279 1.791955 9.98375 1.791955 15.385216a95.792805 95.792805 0 0 1-1.663959 17.381965 115.529912 115.529912 0 0 1-30.540036 54.680233c-6.963026 6.963026-14.566036 12.978876-22.885828 18.073148s-16.895578 9.548561-25.804155 13.337267-17.945151 7.091023-27.160921 9.906952-18.149946 5.299068-26.853728 7.500613h0.153596c-3.891103 1.20317-8.089398 2.252744-12.594885 3.148721s-9.062173 1.638359-13.644459 2.252744-9.164571 1.075173-13.721257 1.433564-8.831779 0.537587-12.82528 0.537586c-4.40309 0-8.089398-0.281593-11.110122-0.819179s-5.427064-1.305567-7.270218-2.252744-3.174321-2.022349-3.967901-3.225519-1.20317-2.508737-1.20317-3.891103c0-1.99675 0.563186-4.070298 1.715157-6.220644s3.071923-4.223894 5.657459-6.118247z m65.99515-43.058124l-3.737507 15.743607c-1.279968 5.401465-2.559936 10.700532-3.737506 15.897202l3.455913-0.742381a309.470663 309.470663 0 0 0 21.913053-5.990251 212.986675 212.986675 0 0 0 32.639184-12.978875 178.427539 178.427539 0 0 0 34.866328-22.297043c5.401465-4.40309 10.137347-9.113372 14.258844-14.182045s7.372616-10.342141 9.830154-15.897203 3.686308-11.314917 3.686308-17.330766c0-6.092648-1.20317-11.878103-3.60951-17.330767s-5.631859-10.495738-9.676558-15.154821-8.754981-8.80618-14.105248-12.441289-10.982125-6.732632-16.76758-9.343767-11.673308-4.582285-17.61236-5.913452-11.570911-2.022349-16.869978-2.022349c-7.500612 19.404315-13.900452 39.090223-19.19952 59.108922s-10.41894 40.267793-15.334017 60.875278zM715.054124 553.176571c-0.79358 1.20317-1.817555 3.276718-3.071924 6.220644s-2.559936 6.348641-3.891102 10.188545-2.687933 7.935802-4.044699 12.236494-2.611135 8.319792-3.737507 12.082898-2.124747 7.039824-2.918327 9.906953-1.305567 4.735882-1.510362 5.631859c-0.204795 1.100772-0.563186 2.739132-1.126372 4.940676l-1.433564 5.708658c11.21252-3.788705 22.271443-6.937427 33.227969-9.446164a146.940326 146.940326 0 0 1 39.679008-3.583911c2.81593 0.102397 5.555061 0.486388 8.242994 1.126372s5.017475 1.663958 6.963026 3.071923 2.918327 3.404715 2.918327 5.990251l-0.153596 1.868753a18.252344 18.252344 0 0 1-3.225519 8.473388 9.036574 9.036574 0 0 1-4.275093 3.302318c-1.100772-0.102397-2.175946-0.153596-3.22552-0.153597h-3.225519c-7.091023 0-14.233244 0.614385-21.375466 1.868754s-14.361241 2.943926-21.60586 5.094272-14.463638 4.710282-21.682658 7.654209-14.38684 6.067048-21.58026 9.369366l-15.154821 65.559961c-0.204795 1.689558-1.023974 3.225519-2.483138 4.582285s-2.867128 2.022349-4.275093 2.02235h-3.60951c-3.788705 0-6.425439-1.561561-7.884603-4.659084s-2.175946-7.091023-2.175945-12.0061c0-4.095898 0.358391-8.575786 1.049573-13.414064s1.510362-9.574161 2.40634-14.182046l2.40634-12.594885c0.716782-3.788705 1.049574-6.707032 1.049574-8.703782-1.20317-1.689558-2.40634-3.507112-3.60951-5.401465s-1.791955-4.249494-1.791955-7.039824c0-4.40309 1.151971-7.910202 3.455913-10.495738s5.350266-5.145471 9.138972-7.654209c0.40959-0.307192 0.81918-0.844779 1.279968-1.638359s0.844779-1.689558 1.20317-2.687932 0.639984-1.99675 0.895977-2.995126l0.665584-2.559936 6.143846-22.194645a1206.216245 1206.216245 0 0 1 16.127597-54.526636l3.967901-12.082898c0.40959-1.305567 1.075173-3.148721 2.022349-5.555062s2.099148-4.761481 3.455914-7.039824 2.867128-4.300692 4.582285-5.99025 3.558311-2.559936 5.555061-2.559936c4.505487 0 7.577411 0.38399 9.21577 1.126372s2.713532 1.715157 3.225519 2.918327l1.356766 3.302318c1.61276-0.204795 3.865503-0.563186 6.83503-1.126372s5.99025-1.177571 9.138971-1.868754 6.067048-1.382365 8.780581-2.022349 4.659084-1.177571 5.862253-1.58716c6.707032-1.791955 12.850879-3.353516 18.457139-4.659084s10.905327-2.38074 15.897202-3.225519 9.804555-1.484763 14.41244-1.868754 9.241369-0.588785 13.951651-0.588785c2.201545 0 4.249494 0.102397 6.143846 0.307193s3.532712 0.563186 4.863879 1.126371 2.431939 1.356766 3.225519 2.40634 1.20317 2.431939 1.20317 4.121497a14.617235 14.617235 0 0 1-2.534336 7.423815 15.61561 15.61561 0 0 1-9.471764 6.502237c-0.691183 0.204795-1.945551 0.486388-3.737506 0.81918l-6.220645 1.126371-7.500612 1.279968-7.577411 1.279968c-3.788705 0.895978-8.063798 1.868753-12.825279 2.918327s-9.702157 2.227144-14.847629 3.532712-10.316542 2.687933-15.513212 4.198295-10.111747 3.046324-14.694033 4.659084-8.729382 3.251119-12.364491 4.940676-6.553436 3.430314-8.652583 5.22227z" fill="#FFFFFF" p-id="4911"></path></svg>
                ''',
                '''
                <svg t="1661224274975" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="37263" width="200" height="200"><path d="M332.799002 686.081014m-332.799002 0a332.799002 332.799002 0 1 0 665.598003 0 332.799002 332.799002 0 1 0-665.598003 0Z" fill="#DFDFF2" p-id="37264"></path><path d="M883.19735 1024h-639.99808A141.055577 141.055577 0 0 1 102.399693 883.200422v-742.397772A141.055577 141.055577 0 0 1 243.19927 0.003072h516.350451a89.087733 89.087733 0 0 1 63.231811 25.599923l189.695431 189.695431A38.399885 38.399885 0 0 1 1023.996928 243.202342v639.99808a141.055577 141.055577 0 0 1-140.799578 140.799578zM243.19927 76.802842A63.999808 63.999808 0 0 0 179.199462 140.80265v742.397772A63.999808 63.999808 0 0 0 243.19927 947.20023h639.99808a63.999808 63.999808 0 0 0 63.999808-63.999808V259.074295l-179.199462-179.199463a12.799962 12.799962 0 0 0-8.447975-3.07199z" fill="#434260" p-id="37265"></path><path d="M354.558936 399.105875h40.959877L436.73469 512.001536c5.119985 15.103955 9.727971 30.463909 15.103954 45.823863h1.535996c5.119985-15.359954 9.471972-30.719908 14.847955-45.823863l40.959877-114.175657h41.215877v226.047321h-33.5359V512.001536c0-20.223939 2.815992-49.407852 4.607987-69.88779l-18.175946 51.199846-39.423882 107.775677h-22.015934l-39.679881-107.775677-17.919946-51.199846c1.535995 20.479939 4.351987 49.663851 4.351987 69.88779v111.871664h-34.047898zM609.534171 399.105875h58.623825c69.375792 0 109.055673 38.399885 109.055672 112.127663s-39.679881 113.919658-107.263678 113.919659h-60.415819zM665.598003 595.713285c48.383855 0 74.495777-28.671914 74.495777-84.735746s-25.599923-83.19975-74.495777-83.19975h-20.479938v167.935496z" fill="#434260" p-id="37266"></path></svg>
                ''',
                '''
                <svg t="1661224323171" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="39536" width="200" height="200"><path d="M847.872 240.128v688c0 26.56-21.408 48-48 48h-576c-26.56 0-48-21.44-48-48v-832c0-26.592 21.44-48 48-48h432z" fill="#E9EDED" p-id="39537"></path><path d="M160 768.128v160c0 35.456 28.544 64 64 64h576c35.456 0 64-28.544 64-64v-160H160z" fill="#F17F53" p-id="39538"></path><path d="M847.872 240.128h-144c-26.56 0-48-21.44-48-48v-144" fill="#F17F53" p-id="39539"></path><path d="M432.256 320.128c-35.2 0-64 28.8-64 64v32c0 18.016-14.016 32-32 32a16 16 0 0 0-15.936 12.992 16 16 0 0 0 0 0.064 16 16 0 0 0 4.736 14.56 16 16 0 0 0 2.496 1.92 16 16 0 0 0 4.448 1.92 16 16 0 0 0 3.136 0.48 16 16 0 0 0 1.12 0.064c17.984 0 32 13.984 32 32v32c0 35.2 28.8 64 64 64a16 16 0 1 0 0-32c-18.016 0-32-13.984-32-32v-32c0-19.136-8.736-36.256-22.208-48a63.68 63.68 0 0 0 22.208-48v-32c0-18.016 13.984-32 32-32a16 16 0 1 0 0-32z m125.856 0a16 16 0 0 0 1.632 32c18.016 0 32 13.984 32 32v32c0 19.168 8.736 36.224 22.208 48-13.44 11.744-22.208 28.864-22.208 48v32c0 18.016-13.984 32-32 32a16 16 0 1 0 0 32c35.2 0 64-28.8 64-64v-32c0-18.016 14.016-32 32-32a16 16 0 0 0 10.368-3.616 16 16 0 0 0 1.216-1.152 16 16 0 0 0-11.584-27.232c-17.984 0-32-13.984-32-32v-32c0-35.2-28.8-64-64-64a16 16 0 0 0-1.6 0zM496 384a16 16 0 0 0-16 16 16 16 0 0 0 16 16 16 16 0 0 0 16-16 16 16 0 0 0-16-16z m-0.256 63.808A16 16 0 0 0 480 464v96a16 16 0 1 0 32 0v-96a16 16 0 0 0-16.256-16.192z" fill="#F17F53" p-id="39540"></path><path d="M720.576 799.616a16 16 0 0 0-1.632 0.064 16 16 0 0 0-15.008 17.312v126.816a16 16 0 1 0 32 0v-80l66.624 88.96a16 16 0 0 0 0.064 0.096l0.448 0.576a16 16 0 0 0 28.864-9.6v-127.68a16 16 0 0 0-16.256-16.224 16 16 0 0 0-15.744 16.256v79.68l-67.136-89.6a16 16 0 0 0-12.224-6.656zM303.744 800a16 16 0 0 0-15.744 16.256V912c0 9.152-6.848 16-16 16a15.616 15.616 0 0 1-16-16 16 16 0 0 0-16.256-16.192A16 16 0 0 0 224 912c0 26.304 21.696 48 48 48 24.768 0 45.152-19.296 47.488-43.52a16 16 0 0 0 0.512-4.224v-96A16 16 0 0 0 303.744 800z m288.256 0a80.256 80.256 0 0 0-80 80c0 44 36 80 80 80s80-36 80-80-36-80-80-80z m-193.888 0.128a16 16 0 0 0-1.984 0.384c-24.64 1.92-44.384 22.528-44.384 47.616 0 25.28 20.096 46.08 44.992 47.68a16 16 0 0 0 3.008 0.32h32c9.152 0 16 6.848 16 16 0 9.152-6.848 16-16 16h-64a16 16 0 1 0 0 32h64a16 16 0 0 0 3.328-0.384 48.096 48.096 0 0 0 44.672-47.616c0-25.152-19.84-45.888-44.544-47.68a16 16 0 0 0-3.456-0.32h-30.88a16 16 0 0 0-1.12 0 15.616 15.616 0 0 1-16-16c0-9.152 6.88-16 16-16h64a16 16 0 1 0 0-32h-62.88a16 16 0 0 0-1.12 0 16 16 0 0 0-1.6 0zM592 832c26.688 0 48 21.312 48 48s-21.312 48-48 48-48-21.312-48-48 21.312-48 48-48z" fill="#E9EDED" p-id="39541"></path></svg>
                ''',
                '''
                <svg t="1661224349940" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="41022" width="200" height="200"><path d="M901.851653 926.484607a48.255937 48.255937 0 0 1-14.274541 34.442195 48.844737 48.844737 0 0 1-34.457555 14.279661H170.419644a48.220097 48.220097 0 0 1-34.457555-14.279661 48.844737 48.844737 0 0 1-14.279662-34.442195V48.846068a48.317377 48.317377 0 0 1 14.279662-34.467795A48.844737 48.844737 0 0 1 170.419644 0.001331h418.800096a48.742337 48.742337 0 0 1 34.662355 14.131182l263.858857 263.910057a48.844737 48.844737 0 0 1 14.110701 34.667475z" fill="#EBECF0" p-id="41023"></path><path d="M901.851653 926.484607v48.767936a48.317377 48.317377 0 0 1-14.274541 34.467796 48.844737 48.844737 0 0 1-34.457555 14.279661H170.419644a48.844737 48.844737 0 0 1-48.788417-48.844737v-48.721856a48.204737 48.204737 0 0 0 14.279662 34.442195 48.844737 48.844737 0 0 0 34.457555 14.279661h682.648713a48.844737 48.844737 0 0 0 48.773056-48.783296z" fill="#C1C7D0" p-id="41024"></path><path d="M24.167034 536.423034h975.153932v243.849923a48.921536 48.921536 0 0 1-48.721856 48.844736H73.011771a48.342977 48.342977 0 0 1-34.467796-14.274541 48.844737 48.844737 0 0 1-14.376941-34.570195z" fill="#FF6B08" p-id="41025"></path><path d="M121.733627 536.412794V438.856441L24.167034 536.412794z m780.118026 0l0.926719-97.556353 97.039234 97.556353z" fill="#FF4B08" p-id="41026"></path><path d="M901.851653 312.628125v6.860791h-263.833257a48.844737 48.844737 0 0 1-48.844736-48.844737V0.001331a48.732097 48.732097 0 0 1 34.662355 14.115822l264.268456 263.751337a49.459136 49.459136 0 0 1 13.701102 34.754515z" fill="#C1C7D0" p-id="41027"></path><path d="M310.308102 722.703752l-29.516761 51.164093H213.888388l63.948716-94.453637-58.045364-86.579087h66.902953l25.579487 46.238659 26.567645-46.233539h66.902953l-61.987759 86.579087 61.987759 94.448517H338.841825zM476.579886 773.867845H422.471796v-181.032724H494.284823l32.470998 113.146732 31.477719-113.146732h71.828387v181.032724h-53.130171v-55.096248l0.983038-28.533723 2.949116-32.465878h-0.983038l-32.465878 116.095849h-41.323466l-33.454037-116.095849 1.971198 26.562526 1.966077 28.528602zM805.191299 773.867845h-141.675336v-181.032724h60.011442v138.726219h81.663894z" fill="#FFFFFF" p-id="41028"></path></svg>
                '''
            ],
        },
        {
            "type": ['exe', 'apk', 'hap'],
            "desc": "可执行文件",
            "class": [
                '''
                <svg t="1661223927696" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="29026" width="200" height="200"><path d="M106.666667 320h810.666666v-85.333333a10.666667 10.666667 0 0 0-10.666666-10.666667H117.333333a10.666667 10.666667 0 0 0-10.666666 10.666667v85.333333z m10.666666 480h789.333334a10.666667 10.666667 0 0 0 10.666666-10.666667V341.333333H106.666667v448a10.666667 10.666667 0 0 0 10.666666 10.666667z" fill="#FFFFFF" p-id="29027"></path><path d="M154.666667 272m-16 0a16 16 0 1 0 32 0 16 16 0 1 0-32 0Z" fill="#C8C6C4" p-id="29028"></path><path d="M208 272m-16 0a16 16 0 1 0 32 0 16 16 0 1 0-32 0Z" fill="#C8C6C4" p-id="29029"></path><path d="M261.333333 272m-16 0a16 16 0 1 0 32 0 16 16 0 1 0-32 0Z" fill="#C8C6C4" p-id="29030"></path><path d="M320 800H117.333333a10.666667 10.666667 0 0 1-10.666666-10.666667V341.333333h213.333333v458.666667z" fill="#EDEBE9" p-id="29031"></path><path d="M256 501.333333h-85.333333a10.666667 10.666667 0 1 1 0-21.333333h85.333333a10.666667 10.666667 0 1 1 0 21.333333z m0-64h-85.333333a10.666667 10.666667 0 1 1 0-21.333333h85.333333a10.666667 10.666667 0 1 1 0 21.333333z m0 128h-85.333333a10.666667 10.666667 0 1 1 0-21.333333h85.333333a10.666667 10.666667 0 1 1 0 21.333333z m320-64H394.666667a10.666667 10.666667 0 1 1 0-21.333333h181.333333a10.666667 10.666667 0 1 1 0 21.333333z m0-64H394.666667a10.666667 10.666667 0 1 1 0-21.333333h181.333333a10.666667 10.666667 0 1 1 0 21.333333z m0 128H394.666667a10.666667 10.666667 0 1 1 0-21.333333h181.333333a10.666667 10.666667 0 1 1 0 21.333333z m0 64H394.666667a10.666667 10.666667 0 1 1 0-21.333333h181.333333a10.666667 10.666667 0 1 1 0 21.333333z m0 64H394.666667a10.666667 10.666667 0 1 1 0-21.333333h181.333333a10.666667 10.666667 0 1 1 0 21.333333z" fill="#C8C6C4" p-id="29032"></path><path d="M842.666667 693.333333H661.333333a21.333333 21.333333 0 0 1-21.333333-21.333333V437.333333a21.333333 21.333333 0 0 1 21.333333-21.333333h181.333334a21.333333 21.333333 0 0 1 21.333333 21.333333v234.666667a21.333333 21.333333 0 0 1-21.333333 21.333333z" fill="#69AFE5" p-id="29033"></path><path d="M906.666667 202.666667H117.333333c-17.642667 0-32 14.357333-32 32v554.666666c0 17.642667 14.357333 32 32 32h789.333334c17.642667 0 32-14.357333 32-32V234.666667c0-17.642667-14.357333-32-32-32z m-789.333334 21.333333h789.333334a10.666667 10.666667 0 0 1 10.666666 10.666667v85.333333H106.666667v-85.333333a10.666667 10.666667 0 0 1 10.666666-10.666667z m789.333334 576H117.333333a10.666667 10.666667 0 0 1-10.666666-10.666667V341.333333h810.666666v448a10.666667 10.666667 0 0 1-10.666666 10.666667z" fill="#605E5C" opacity=".64" p-id="29034"></path></svg>
                ''',
                '''
                <svg t="1661223956211" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="29410" width="200" height="200"><path d="M751.80113 11.570621H210.932429a74.804068 74.804068 0 0 0-74.572655 74.572656v851.713446A74.804068 74.804068 0 0 0 210.932429 1012.429379h708.700565a74.804068 74.804068 0 0 0 74.572656-74.572656V254.032994z" fill="#E9FFE9" p-id="29411"></path><path d="M751.80113 179.344633a74.861921 74.861921 0 0 0 74.572655 74.630508h167.774012L751.80113 11.570621z" fill="#97DD97" p-id="29412"></path><path d="M18.223729 624.813559m69.423729 0l569.853107 0q69.423729 0 69.423729 69.423729l0 185.129944q0 69.423729-69.423729 69.423728l-569.853107 0q-69.423729 0-69.423729-69.423728l0-185.129944q0-69.423729 69.423729-69.423729Z" fill="#65CE65" p-id="29413"></path><path d="M147.814689 864.556836a49.637966 49.637966 0 0 1-16.95096-40.497175 48.712316 48.712316 0 0 1 15.562486-38.703729q15.504633-13.711186 43.910508-13.711186H249.057627l2.371978 22.794124H190.510282a39.976497 39.976497 0 0 0-26.26531 7.752316 29.620791 29.620791 0 0 0 2.371977 45.067571 56.522486 56.522486 0 0 0 32.918418 8.215141 107.317514 107.317514 0 0 0 35.406102-4.570395c8.388701-3.066215 12.554124-7.347345 12.554124-12.901243l3.586893 23.141243a47.323842 47.323842 0 0 1-13.537627 9.487909 77.581017 77.581017 0 0 1-18.860113 5.785311 124.55774 124.55774 0 0 1-23.141243 2.024859c-20.364294 0.404972-36.389605-4.338983-47.728814-13.884746z m99.680904-100.143729a45.819661 45.819661 0 0 0-11.570621-33.265536 43.447684 43.447684 0 0 0-32.5713-11.570622 76.423955 76.423955 0 0 0-24.645423 4.049718 70.92791 70.92791 0 0 0-21.463503 11.570621L139.715254 722.75887a66.068249 66.068249 0 0 1 26.496723-18.80226 94.647684 94.647684 0 0 1 36.447458-6.71096 83.539887 83.539887 0 0 1 37.60452 7.752316 53.514124 53.514124 0 0 1 23.777627 22.447006 71.795706 71.795706 0 0 1 8.157288 35.406101v113.449944h-24.703277zM307.489266 700.022599h24.298305v248.305537H307.489266z m43.158418 171.997288a42.695593 42.695593 0 0 1-21.058531-23.141243l2.371977-36.910282a48.075932 48.075932 0 0 0 5.438192 22.215593 44.720452 44.720452 0 0 0 15.620339 17.355932 43.042712 43.042712 0 0 0 23.893333 6.248136 43.968362 43.968362 0 0 0 33.959774-13.132656 52.819887 52.819887 0 0 0 12.322712-37.025988V769.446328a54.266215 54.266215 0 0 0-12.091299-37.662373 48.885876 48.885876 0 0 0-57.853108-6.826667 44.778305 44.778305 0 0 0-15.620339 16.950961A46.282486 46.282486 0 0 0 331.787571 763.661017l-3.586893-34.017627a56.001808 56.001808 0 0 1 24.414011-24.703277 78.101695 78.101695 0 0 1 35.463955-7.578757 58.778757 58.778757 0 0 1 32.050622 8.446554 52.704181 52.704181 0 0 1 20.422146 24.414011 97.36678 97.36678 0 0 1 6.88452 39.224407v38.472316a93.143503 93.143503 0 0 1-6.88452 38.125198 52.935593 52.935593 0 0 1-20.884971 24.414011 62.076384 62.076384 0 0 1-32.976272 8.388701 80.99435 80.99435 0 0 1-36.216045-7.058079zM479.312994 629.036836h24.471865v247.264181H479.312994z m17.355933 187.039096L596.754802 700.022599h28.926554l-133.582825 150.418079z m50.158644-35.058983l14.289717-23.141243 73.473446 118.714576h-29.736497z" fill="#FFFFFF" p-id="29414"></path><path d="M454.783277 109.920904a178.071864 178.071864 0 0 0-178.014011 178.071864h356.085875A178.071864 178.071864 0 0 0 454.783277 109.920904zM280.703277 302.745311h348.16V532.248588H280.703277z" fill="#97DD97" p-id="29415"></path><path d="M386.400904 206.651299m-19.322938 0a19.322938 19.322938 0 1 0 38.645876 0 19.322938 19.322938 0 1 0-38.645876 0Z" fill="#DFF7DF" p-id="29416"></path><path d="M515.35548 206.651299m-19.322938 0a19.322938 19.322938 0 1 0 38.645876 0 19.322938 19.322938 0 1 0-38.645876 0Z" fill="#DFF7DF" p-id="29417"></path></svg>
                ''',
                '''
                <svg t="1661224205317" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="35287" width="200" height="200"><path d="M0.002613 3.135755h1020.864245v1020.864245H0.002613z" fill="#38C152" p-id="35288"></path><path d="M325.87439 621.422185h-76.607354l-14.839963 50.068287h-62.97031l84.047753-257.523215h32.002393v0.214382l0.173547-0.214382h32.002393l84.2213 257.523215h-62.972011l-15.057748-50.068287z m-62.800165-45.938891h48.991275l-24.043054-79.962595h-1.075311l-23.87291 79.962595zM482.056411 583.224848v88.265624h-59.788616V413.967257h98.329644c30.539154 0 54.759158 7.828327 72.694042 23.355673 17.894049 15.569881 26.88446 36.046717 26.88446 61.381164 0 25.378685-8.990411 45.765344-26.88446 61.292689-17.934883 15.486511-42.153186 23.2706-72.694042 23.270601h-38.541028v-0.042536z m0-45.978024h38.541028c12.990498 0 22.884373-3.573025 29.678225-10.712269 6.83979-7.096708 10.239268-16.301501 10.239269-27.485069 0-11.484723-3.356942-20.818825-10.152495-28.131615-6.753017-7.311089-16.689429-10.967485-29.764999-10.967485h-38.541028v77.296438zM713.04226 583.224848v88.265624h-59.790318V413.967257h98.329644c30.539154 0 54.757457 7.828327 72.649804 23.355673 17.979121 15.569881 26.882758 36.046717 26.882759 61.381164 0 25.378685-8.901936 45.765344-26.882759 61.292689-17.894049 15.486511-42.11065 23.2706-72.649804 23.270601H713.04226v-0.042536z m0-45.978024h38.539326c12.988796 0 22.841837-3.573025 29.724164-10.712269 6.793852-7.096708 10.235865-16.301501 10.235866-27.485069 0-11.484723-3.397776-20.818825-10.150794-28.131615-6.797254-7.311089-16.733666-10.967485-29.809236-10.967485H713.04226v77.296438z" fill="#FFFFFF" p-id="35289" data-spm-anchor-id="a313x.7781069.0.i30" class="selected"></path></svg>
                '''
            ],
        },
        {
            "type": ['html', 'css', 'js', 'php', 'py', 'java', 'c', 'cpp', 'vue', 'sql','go', 'sh'],
            "desc": "html, css,js文件",
            "class": [
                '''
                <svg t="1661221918606" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4283" width="200" height="200"><path d="M145.621959 0c-44.79888 0-79.998 36.81188-79.998 81.61076v860.77848c0 44.79888 35.19912 81.61076 79.998 81.61076h732.781681a81.969151 81.969151 0 0 0 81.61076-81.61076V324.80468L657.60916 0h-511.987201z" fill="#F7622C" p-id="4284"></path><path d="M959.9888 326.39184v15.9996h-204.79488s-100.81028-20.81228-99.19752-108.79728c0 0 4.81268 92.79768 97.61036 92.79768H959.9888z" fill="#F54921" p-id="4285"></path><path d="M657.60916 0v233.59416c0 25.59936 17.61236 92.79768 97.61036 92.79768h204.79488L657.60916 0z" fill="#FFFFFF" p-id="4286"></path><path d="M292.895078 726.919427c-6.195045 0-10.444539-1.356766-12.748482-4.044699s-3.455914-6.39984-3.455913-11.110122c0-2.508737 0.255994-5.19667 0.742381-8.089398s1.151971-5.887853 1.945552-9.010975c1.407965-5.299068 2.969526-10.572536 4.735881-15.820404s3.507112-10.546936 5.247869-15.897203 3.455914-10.700532 5.094273-16.050798 3.123122-10.726132 4.428689-16.127597a10.137347 10.137347 0 0 0 0.153596-1.945552c0-1.407965-0.358391-2.508737-1.049574-3.302317s-1.740756-1.20317-3.148721-1.20317c-2.201545 0-4.582285 0.460788-7.116622 1.356766s-4.684683 1.894353-6.374241 2.995125c-6.707032 4.505487-12.569286 8.959776-17.612359 13.337267s-9.676558 9.010975-13.874854 13.798055-8.191795 9.958151-11.929301 15.410815-7.679808 11.417315-11.775706 17.919552c-3.507112 6.502237-6.092648 12.031699-7.807805 16.562786s-3.276718 8.217395-4.735881 11.033324-3.071923 4.81268-4.863879 6.067048-4.505487 1.868753-8.089398 1.868753c-3.9935 0-6.835029-1.151971-8.473388-3.455913s-2.483138-5.273468-2.483138-8.985376c0-2.892728 0.460788-6.143846 1.356766-9.753356l49.509163-198.292642c0.307192-1.20317 0.79358-2.508737 1.510362-3.891103a15.61561 15.61561 0 0 1 7.116622-6.886228 12.79968 12.79968 0 0 1 5.631859-1.20317c1.61276 0 3.302317 0.076798 5.094273 0.230394s3.430314 0.460788 4.863878 0.895978 2.662333 1.177571 3.60951 2.175945 1.433564 2.303942 1.433564 3.891103c0 0.40959-0.102397 1.228769-0.307192 2.483138s-0.511987 2.662333-0.895978 4.275093c-5.401465 21.708257-11.18692 44.286893-17.330766 67.787106l-18.661934 71.243018c6.092648-7.500612 12.441289-14.38684 19.045924-20.633084s13.362866-11.622109 20.325892-16.127596 14.156446-8.0126 21.60586-10.572536 15.18042-3.814305 23.167421-3.814305c5.094273 0 9.062173 1.61276 11.852503 4.863879s4.172696 7.398215 4.172696 12.39009c0 2.303942-0.307192 4.556686-0.895978 6.758231-1.20317 4.607885-2.559936 9.113372-4.044699 13.567661s-3.046324 8.934177-4.659083 13.414064-3.19992 9.062173-4.81268 13.721257-2.995125 9.420564-4.198295 14.335642c-1.61276 6.297443-2.687933 12.262093-3.302317 17.919552s-0.998375 10.162946-1.20317 13.567661c-0.204795 2.892728-0.639984 5.708657-1.356766 8.39659s-1.715157 5.068673-3.071923 7.116622-3.046324 3.711907-5.094273 4.940676-4.454289 1.894353-7.270218 1.894353zM379.753706 671.727207c0-8.39659 0.947176-17.125972 2.841529-26.162546s3.891103-17.714757 5.99025-26.034549c-2.611135-0.102397-5.247869-0.511987-7.961401-1.20317s-5.145471-1.638359-7.347016-2.841529-3.9935-2.662333-5.401465-4.428689-2.099148-3.763106-2.099147-6.067049a19.020324 19.020324 0 0 1 2.303942-7.57741c0.742381-1.356766 1.715157-2.508737 2.918327-3.455914s2.559936-1.433564 4.044699-1.433564h20.095498c1.894353 0 3.19992-0.81918 3.891102-2.483138s1.254369-3.276718 1.638359-4.863878c1.305567-5.811055 2.534337-10.828529 3.686308-15.078023l2.918327-10.80293c0.79358-2.943926 1.433564-5.350266 1.868753-7.193421a20.581885 20.581885 0 0 0 0.511988-8.166195c-0.102397-1.177571-0.051199-2.841529-0.051199-4.940677v-1.510362c0-0.79358 0.076798-1.843154 0.230394-3.148721s0.614385-3.148721 1.433564-5.555062c0.588785-1.894353 1.689558-3.711907 3.302318-5.401464s3.942301-2.559936 7.039824-2.559936c2.687933 0 4.991875 0.537587 6.911827 1.638359s3.455914 2.559936 4.659084 4.351891 2.099148 3.839904 2.687932 6.143846 0.895978 4.607885 0.895978 6.911827c0 2.508737-0.255994 4.761481-0.742382 6.758231l-10.956526 42.00855c5.401465-0.895978 10.188545-1.740756 14.41244-2.559936l12.594885-2.40634c4.607885-0.895978 8.575786-1.740756 11.929302-2.559936s6.220644-1.484763 8.626984-2.022349l6.067049-1.356766a19.967501 19.967501 0 0 1 4.121497-0.537587c1.61276 0 3.225519 0.127997 4.863878 0.383991s3.097523 0.665583 4.351891 1.279968 2.278343 1.459164 3.071923 2.559936 1.20317 2.559936 1.20317 4.351891c0 2.40634-0.486388 4.531087-1.433564 6.374241s-2.175946 3.455914-3.686308 4.812679-3.19992 2.457539-5.094272 3.302318-3.788705 1.484763-5.708658 1.868753c-1.61276 0.307192-3.686308 0.742381-6.220644 1.356766s-5.350266 1.254369-8.39659 1.945551-6.220644 1.459164-9.522962 2.252744-6.502237 1.61276-9.59976 2.40634c-4.607885 1.20317-8.524587 2.201545-11.775706 2.995125s-6.01585 1.407965-8.319792 1.791955-4.172696 0.691183-5.631859 0.895978-2.636734 0.307192-3.532712 0.307192c-1.894353 5.708657-3.558311 11.289318-4.940676 16.79318s-2.585535 10.623734-3.532712 15.385216-1.638359 9.010975-2.099147 12.748481-0.665583 6.681433-0.665584 8.78058c0 2.687933 0.255994 5.273468 0.742382 7.731007s1.356766 4.582285 2.559936 6.374241 2.81593 3.225519 4.863878 4.275093 4.633484 1.58716 7.731007 1.58716c5.299068 0 10.495738-1.459164 15.59001-4.351891s9.98375-6.579036 14.617235-11.033324 9.062173-9.318167 13.209269-14.617235 7.987-10.342141 11.468514-15.154821c1.20317-1.791955 2.739132-2.687933 4.659083-2.687933a9.574161 9.574161 0 0 1 4.659084 1.356766c0.81918 0.511987 1.484763 1.151971 2.022349 1.945552s0.81918 1.740756 0.81918 2.841529a7.679808 7.679808 0 0 1-0.153596 1.791955c-1.61276 6.195045-4.070298 12.41569-7.423815 18.661933s-6.78383 12.518087-10.265343 18.81553c-1.20317 2.201545-2.764731 4.351891-4.735882 6.451039s-4.070298 4.121497-6.37424 6.067048-4.710282 3.788705-7.193421 5.555061-4.838279 3.327917-7.039824 4.735882c-3.788705 2.40634-7.961401 4.044699-12.441289 4.940676s-8.857379 1.356766-13.055673 1.356766c-6.502237 0-12.262093-1.177571-17.330767-3.532711s-9.292568-5.555061-12.748481-9.59976-6.067048-8.78058-7.884603-14.182046-2.687933-11.18692-2.687933-17.381965zM520.601385 708.487888c2.995125-11.698908 5.887853-22.604235 8.703782-32.690383s5.529462-19.762706 8.166196-29.029674l7.731007-26.930527c2.508737-8.703782 4.889478-17.561161 7.19342-26.546536 0.895978-3.507112 1.433564-6.886228 1.58716-10.137347s0.614385-6.630234 1.433565-10.137346c0.40959-1.20317 1.126372-2.278343 2.175945-3.22552a18.585135 18.585135 0 0 1 11.775706-4.710282c2.79033 0 5.119872 0.332792 6.963026 0.972776s3.353516 1.535962 4.505487 2.636734 1.945551 2.431939 2.40634 3.967901 0.665583 3.276718 0.665583 5.17107c0 3.404715-0.537587 6.835029-1.638359 10.265344s-2.457539 7.21902-4.044699 11.314917c4.710282-3.711907 9.522962-7.19342 14.463639-10.495738s10.060548-6.195045 15.308417-8.703782 10.623734-4.505487 16.127597-5.99025 11.21252-2.252744 17.100372-2.252744c2.687933 0 5.401465 0.435189 8.089398 1.279968s5.119872 2.175946 7.270218 3.967901 3.942301 4.147096 5.401465 7.039824 2.278343 6.451039 2.483138 10.649333c4.300692-2.892728 8.754981-5.836654 13.337267-8.78058s9.266968-5.60626 14.028449-7.961401 9.497363-4.249494 14.258844-5.708657 9.369366-2.175946 13.874853-2.175946c6.707032 0 12.236494 0.870378 16.562786 2.636734s7.807805 4.095898 10.342141 7.039824 4.351891 6.374241 5.401465 10.265344 1.58716 8.038199 1.58716 12.441288c0 4.81268-0.460788 9.753356-1.356766 14.847629s-1.894353 9.958151-2.995125 14.540437c-2.892728 11.59651-6.143846 22.578636-9.753356 32.920777s-7.500612 20.81228-11.698907 31.436014l-3.148722 7.961401c-1.100772 2.81593-2.38074 5.375866-3.814304 7.731007s-3.148721 4.300692-5.094273 5.862253-4.223894 2.329542-6.835029 2.329542c-5.887853 0-9.958151-0.998375-12.159696-2.995125s-3.302317-4.838279-3.302318-8.550187c0-0.998375 0.051199-2.150346 0.153597-3.455913s0.358391-2.559936 0.742381-3.737507c0.40959-1.510362 1.305567-3.686308 2.687933-6.527837s2.918327-5.913452 4.582285-9.215769 3.276718-6.630234 4.863879-9.983751 2.79033-6.271843 3.609509-8.78058c1.305567-4.300692 2.81593-9.266968 4.582286-14.924427s3.430314-11.340516 5.017474-17.100372 2.918327-11.21252 3.967901-16.357991 1.58716-9.318167 1.587161-12.518088c0-1.510362-0.153596-2.995125-0.460789-4.505487s-0.81918-2.79033-1.58716-3.891103-1.791955-1.99675-3.148722-2.687932-3.071923-1.049574-5.17107-1.049574c-2.995125 0-6.579036 0.844779-10.726132 2.559936s-8.447789 3.916702-12.902078 6.681433-8.78058 5.862253-12.978875 9.292567-7.807805 6.886228-10.80293 10.265344c-2.099148 2.40634-4.095898 4.351891-5.99025 5.862253s-3.788705 2.662333-5.708658 3.455914c-0.204795 0.40959-0.691183 1.715157-1.510362 3.967901s-1.740756 4.940676-2.841529 8.089397-2.252744 6.553436-3.455913 10.188546l-3.379116 10.188545-2.636734 7.961401c-0.716782 2.150346-1.049574 3.327917-1.049574 3.532712-0.691183 2.79033-1.305567 5.683058-1.791955 8.626984l-1.356766 8.473388c-0.40959 2.687933-0.767981 5.58066-1.126372 8.626984s-1.049574 5.887853-2.099147 8.550187-2.662333 4.81268-4.81268 6.527837-5.171071 2.559936-9.062173 2.559936c-1.99675 0-3.814305-0.511987-5.478264-1.510363s-3.071923-2.278343-4.275093-3.814304-2.150346-3.302317-2.841529-5.247869-1.100772-3.916702-1.20317-5.913452c2.303942-9.010975 4.556686-17.100372 6.758232-24.293793s4.40309-14.105247 6.604634-20.709882 4.326292-13.234869 6.374241-19.865104 4.070298-13.977251 6.067048-21.96425c0.511987-1.894353 0.895978-3.763106 1.20317-5.63186s0.460788-3.481513 0.460789-4.863878c0-2.40634-0.511987-4.377491-1.510362-5.913452s-2.739132-2.329542-5.247869-2.329542c-4.095898 0-8.166196 0.81918-12.236494 2.483138s-8.422189 4.223894-13.132472 7.731007-9.932552 7.961401-15.666808 13.337266-12.364491 11.852504-19.865104 19.353116c-0.79358 1.510362-1.843154 4.300692-3.148721 8.39659s-2.636734 8.447789-3.967901 13.055674-2.585535 8.882978-3.686308 12.825279-1.791955 6.579036-2.099147 7.884603c-1.100772 4.198295-1.843154 7.731007-2.252744 10.572536l-1.049574 7.731007c-0.204795 1.20317-0.511987 3.174321-0.895977 5.913452s-1.126372 5.529462-2.175946 8.319792-2.534337 5.273468-4.428689 7.423814-4.40309 3.225519-7.500613 3.22552c-4.607885 0-8.370991-1.254369-11.314917-3.737507a11.878103 11.878103 0 0 1-4.275093-11.391715 18.687533 18.687533 0 0 1 0.486388-1.99675zM830.046449 512.729582c0.511987-3.9935 1.305567-7.705407 2.40634-11.110122s2.585535-6.220644 4.428689-8.473389 4.223894-3.379116 7.116622-3.379115c1.61276 0 3.379116 0.307192 5.324667 0.895977s3.788705 1.433564 5.555061 2.483138 3.225519 2.329542 4.428689 3.814305 1.791955 3.148721 1.791956 4.940676c0 0.79358-0.153596 1.715157-0.460789 2.764731s-0.537587 2.073548-0.742381 3.071924l-37.503063 150.293842c-1.510362 5.99025-2.739132 11.724507-3.737506 17.177171s-1.740756 9.932552-2.252744 13.414064v3.60951c0 2.995125-0.204795 6.271843-0.588785 9.830154s-1.151971 6.860628-2.252744 9.906953-2.636734 5.60626-4.582285 7.654208-4.479888 3.071923-7.577411 3.071924c-2.687933 0-5.043074-0.563186-7.039824-1.715158s-3.660708-2.636734-4.940677-4.428689-2.252744-3.737507-2.841528-5.785455-0.895978-3.967901-0.895978-5.785456c0-1.61276 0.153596-3.58391 0.460788-5.913452s0.665583-4.81268 1.126372-7.347016 0.921577-5.094273 1.433564-7.654209 0.998375-4.78708 1.510363-6.681433l38.706232-153.59616a193.275168 193.275168 0 0 1 1.126372-11.058923z" fill="#FFFFFF" p-id="4287"></path></svg>
                ''',
                '''
                <svg t="1661221970738" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4440" width="200" height="200"><path d="M145.621959 0c-44.79888 0-79.998 36.81188-79.998 81.61076v860.77848c0 44.79888 35.19912 81.61076 79.998 81.61076h732.781681a81.969151 81.969151 0 0 0 81.61076-81.61076V324.80468L657.60916 0h-511.987201z" fill="#4BBFEB" p-id="4441"></path><path d="M657.60916 0v233.59416c0 25.59936 17.61236 92.79768 97.61036 92.79768h204.79488L657.60916 0z" fill="#FFFFFF" p-id="4442"></path><path d="M240.211595 652.886078c0-5.811055 0.691183-12.364491 2.099147-19.737107s3.839904-14.463638 7.347017-21.375465c4.81268-9.59976 10.137347-18.866728 16.050798-27.826505s11.954901-17.20277 18.149947-24.754581 12.39009-14.258844 18.610734-20.095497 12.108497-10.41894 17.689158-13.721257l-0.153596 0.153596c3.507112-2.201545 7.19342-4.505487 11.110122-6.911827s7.910202-4.607885 12.0061-6.604635 8.242994-3.660708 12.441289-4.940677 8.345391-1.945551 12.441289-1.945551c4.198295 0 8.191795 0.844779 12.0061 2.559936s7.116622 4.0191 9.98375 6.963026 5.094273 6.374241 6.758231 10.265343 2.483138 8.038199 2.483138 12.441289c0 3.097523-0.179196 5.529462-0.537586 7.270218s-0.895978 3.071923-1.638359 3.967901-1.689558 1.459164-2.841529 1.638359-2.483138 0.307192-3.967901 0.307193c-2.201545 0-3.916702-0.486388-5.171071-1.433565s-2.252744-2.099148-2.995125-3.455913-1.331167-2.841529-1.715157-4.505488-0.870378-3.148721-1.433564-4.505487-1.254369-2.508737-2.099148-3.455914-2.022349-1.433564-3.532712-1.433564c-3.9935 0-8.319792 0.895978-12.978875 2.687933s-9.394965 4.198295-14.258844 7.19342-9.702157 6.425439-14.540436 10.265344-9.471763 7.782205-13.874853 11.775705-8.473388 7.961401-12.236494 11.852504-6.963026 7.398215-9.676558 10.495737c-3.9935 5.094273-7.654209 10.265343-10.956527 15.513213s-6.143846 10.598135-8.550186 16.050798-4.249494 11.058924-5.555061 16.793181-1.945551 11.724507-1.945551 17.919552c0 4.81268 0.665583 9.010975 2.022349 12.594885s2.81593 6.707032 4.428689 9.292567c1.894353 2.995125 4.249494 5.068673 7.039824 6.220645s6.143846 1.715157 10.060549 1.715157c8.498988 0 16.357991-0.79358 23.551411-2.40634s14.105247-3.737507 20.709882-6.451039 13.055674-5.887853 19.353117-9.59976 12.79968-7.654209 19.506712-11.852503h3.891103c1.305567 0 2.636734 0.358391 3.9679 1.049573s2.559936 1.61276 3.60951 2.687933 1.894353 2.355141 2.559936 3.737507 0.972776 2.841529 0.972776 4.351891c0 3.302317-1.305567 6.579036-3.891103 9.830154s-5.913452 6.348641-9.98375 9.292568-8.626984 5.734257-13.721257 8.319792-10.137347 4.889478-15.078023 6.911827-9.574161 3.711907-13.874853 5.094273-7.756606 2.355141-10.342142 2.841529l-6.37424 1.433564a105.725357 105.725357 0 0 1-17.330767 2.40634c-3.916702 0.255994-8.80618 0.38399-14.694033 0.38399-3.60951 0-6.911827-0.563186-9.906952-1.715157s-5.683058-2.508737-8.0126-4.044699-4.351891-3.174321-5.99025-4.863878-2.969526-3.148721-3.967901-4.351891c-5.887853-6.911827-10.188545-13.695658-12.902077-20.40269s-4.121497-13.900452-4.121497-21.887453zM418.40874 682.120547c3.404715 1.20317 6.886228 2.611135 10.418939 4.198295s7.21902 3.123122 11.033324 4.582285 7.782205 2.662333 11.929302 3.686308 8.575786 1.510362 13.286068 1.510363c5.503862 0 11.058924-0.639984 16.639584-1.945552s11.084523-3.225519 16.434789-5.785455 10.470138-5.657459 15.385216-9.292568 9.394965-7.884603 13.490862-12.671683c4.505487-5.094273 8.242994-9.727757 11.238119-13.874853s5.427064-7.859004 7.270219-11.110122 3.174321-6.041449 3.9679-8.396591 1.20317-4.377491 1.20317-6.067048c0-2.508737-0.844779-4.684683-2.559936-6.527837s-3.967901-3.379116-6.835029-4.582285-6.067048-2.073548-9.676558-2.636734-7.347016-0.81918-11.238119-0.81918c-2.303942 0-4.991875 0.076798-8.089398 0.230395l-9.446164 0.460788-9.292567 0.38399a150.39624 150.39624 0 0 1-7.807805 0.153597c-3.302317 0-6.732632-0.38399-10.265343-1.126372s-7.014225-1.971151-10.41894-3.686308-6.553436-3.9935-9.446164-6.911827a35.403915 35.403915 0 0 1-8.831779-15.743607 24.626584 24.626584 0 0 1-0.742381-6.143846c0-2.40634 0.179196-4.684683 0.537586-6.835029s0.767981-4.223894 1.279968-6.220645c1.407965-4.991875 3.737507-10.086148 6.963026-15.231619s7.142221-10.162946 11.698908-15.078023 9.497363-9.650959 14.847628-14.258844 10.854129-8.934177 16.511588-12.978875 11.21252-7.705407 16.639584-10.956526 10.521337-6.01585 15.231619-8.319792c6.604635-3.19992 13.337267-5.529462 20.172296-6.963026s13.61886-2.175946 20.325891-2.175946c3.9935 0 7.807805 0.537587 11.391716 1.587161s6.78383 2.585535 9.522962 4.582285 4.915077 4.479888 6.527836 7.423815 2.40634 6.323042 2.40634 10.137346c0 2.201545-0.255994 4.044699-0.742381 5.555061s-1.151971 2.713532-1.945552 3.686308-1.663958 1.61276-2.636734 2.022349-1.919952 0.588785-2.918327 0.588786c-2.687933 0-5.171071-0.307192-7.423814-0.895978s-4.428689-1.279968-6.527837-2.022349-4.198295-1.459164-6.297443-2.099148-4.40309-0.972776-6.911827-0.972775c-7.398215 0-14.924427 1.484763-22.578635 4.428689s-15.103622 6.707032-22.348242 11.238119-14.105247 9.625359-20.556286 15.231619-12.236494 11.058924-17.330766 16.357991c-2.687933 2.79033-4.684683 5.60626-5.913453 8.39659s-1.868753 5.452664-1.868753 7.961401c0 3.711907 1.61276 6.604635 4.81268 8.703783s7.091023 3.148721 11.698907 3.148721c2.687933 0 5.759856-0.051199 9.138972-0.153596a796.140096 796.140096 0 0 0 20.761081-0.844779c3.353516-0.153596 6.323042-0.230394 8.934177-0.230394 6.195045 0 12.159696 0.870378 17.842753 2.636734s10.751731 4.326292 15.154822 7.731006 7.935802 7.628609 10.572535 12.671684 3.967901 10.828529 3.967901 17.330766c0 3.9935-0.588785 8.038199-1.791955 12.159696s-2.841529 8.217395-4.940677 12.364491-4.505487 8.242994-7.19342 12.287693-5.555061 8.0126-8.550186 11.929302c-5.401465 6.988625-11.417315 13.59326-18.073148 19.788305s-13.721257 11.59651-21.22187 16.204395-15.436414 8.242994-23.781805 10.956526-16.921177 4.044699-25.727357 4.044699a74.724532 74.724532 0 0 1-23.551411-4.121497c-3.891103-1.356766-7.577411-3.046324-11.033324-5.094273s-6.476638-4.377491-9.062174-6.963026-4.684683-5.478263-6.220644-8.626984-2.329542-6.579036-2.329542-10.265343c0-1.791955 0.281593-3.532712 0.81918-5.171071s1.868753-2.559936 4.070298-2.559936zM606.359241 682.120547c3.404715 1.20317 6.886228 2.611135 10.41894 4.198295s7.21902 3.123122 11.033324 4.582285 7.782205 2.662333 11.929301 3.686308 8.575786 1.510362 13.286068 1.510363c5.503862 0 11.058924-0.639984 16.639584-1.945552s11.084523-3.225519 16.434789-5.785455 10.470138-5.657459 15.385216-9.292568 9.394965-7.884603 13.490863-12.671683c4.505487-5.094273 8.242994-9.727757 11.238119-13.874853s5.427064-7.859004 7.270218-11.110122 3.174321-6.041449 3.967901-8.396591 1.20317-4.377491 1.20317-6.067048c0-2.508737-0.844779-4.684683-2.559936-6.527837s-3.967901-3.379116-6.83503-4.582285-6.067048-2.073548-9.676558-2.636734-7.347016-0.81918-11.238119-0.81918c-2.303942 0-4.991875 0.076798-8.089397 0.230395l-9.446164 0.460788-9.292568 0.38399a150.39624 150.39624 0 0 1-7.807805 0.153597c-3.302317 0-6.732632-0.38399-10.265343-1.126372s-7.014225-1.971151-10.41894-3.686308-6.553436-3.9935-9.446164-6.911827a35.403915 35.403915 0 0 1-8.831779-15.743607 24.626584 24.626584 0 0 1-0.742381-6.143846c0-2.40634 0.179196-4.684683 0.537586-6.835029s0.767981-4.223894 1.279968-6.220645c1.407965-4.991875 3.737507-10.086148 6.963026-15.231619s7.142221-10.162946 11.698908-15.078023 9.497363-9.650959 14.847629-14.258844 10.854129-8.934177 16.511587-12.978875 11.21252-7.705407 16.639584-10.956526 10.521337-6.01585 15.231619-8.319792c6.604635-3.19992 13.337267-5.529462 20.172296-6.963026s13.61886-2.175946 20.325892-2.175946c3.9935 0 7.807805 0.537587 11.391715 1.587161s6.78383 2.585535 9.522962 4.582285 4.915077 4.479888 6.527837 7.423815 2.40634 6.323042 2.406339 10.137346c0 2.201545-0.255994 4.044699-0.742381 5.555061s-1.151971 2.713532-1.945551 3.686308-1.663958 1.61276-2.636734 2.022349-1.919952 0.588785-2.918328 0.588786c-2.687933 0-5.171071-0.307192-7.423814-0.895978s-4.428689-1.279968-6.527837-2.022349-4.198295-1.459164-6.297442-2.099148-4.40309-0.972776-6.911827-0.972775c-7.398215 0-14.924427 1.484763-22.578636 4.428689s-15.103622 6.707032-22.348241 11.238119-14.105247 9.625359-20.556286 15.231619-12.236494 11.058924-17.330767 16.357991c-2.687933 2.79033-4.684683 5.60626-5.913452 8.39659s-1.868753 5.452664-1.868754 7.961401c0 3.711907 1.61276 6.604635 4.81268 8.703783s7.091023 3.148721 11.698908 3.148721c2.687933 0 5.759856-0.051199 9.138971-0.153596a796.140096 796.140096 0 0 0 20.761081-0.844779c3.353516-0.153596 6.323042-0.230394 8.934177-0.230394 6.195045 0 12.159696 0.870378 17.842754 2.636734s10.751731 4.326292 15.154821 7.731006 7.935802 7.628609 10.572536 12.671684 3.967901 10.828529 3.9679 17.330766c0 3.9935-0.588785 8.038199-1.791955 12.159696s-2.841529 8.217395-4.940676 12.364491-4.505487 8.242994-7.193421 12.287693-5.631859 7.987-8.626984 11.878103c-5.401465 6.988625-11.417315 13.59326-18.073148 19.788305s-13.721257 11.59651-21.221869 16.204395-15.436414 8.242994-23.781806 10.956526-16.921177 4.044699-25.727357 4.044699a74.724532 74.724532 0 0 1-23.551411-4.121497c-3.891103-1.356766-7.577411-3.046324-11.033324-5.094272s-6.476638-4.377491-9.062174-6.963026-4.684683-5.478263-6.220644-8.626985-2.329542-6.579036-2.329542-10.265343c0-1.791955 0.281593-3.532712 0.81918-5.171071s1.945551-2.508737 4.147096-2.508737z" fill="#FFFFFF" p-id="4443"></path></svg>
                ''',
                '''
                <svg t="1661221995034" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4596" width="200" height="200"><path d="M145.621959 0c-44.79888 0-79.998 36.81188-79.998 81.61076v860.77848c0 44.79888 35.19912 81.61076 79.998 81.61076h732.781681a81.969151 81.969151 0 0 0 81.61076-81.61076V324.80468L657.60916 0h-511.987201z" fill="#25B39E" p-id="4597"></path><path d="M657.60916 0v233.59416c0 25.59936 17.61236 92.79768 97.61036 92.79768h204.79488L657.60916 0z" fill="#FFFFFF" p-id="4598"></path><path d="M339.511512 648.687783c1.61276 0 2.867128 0.614385 3.814305 1.868753s1.663958 2.764731 2.175945 4.582286 0.81918 3.737507 0.972776 5.862253 0.230394 4.044699 0.230394 5.862253v5.708658c2.099148 3.302317 4.78708 6.886228 8.0126 10.726132s6.963026 7.449414 11.18692 10.802929 8.78058 6.143846 13.721257 8.396591 10.214145 3.379116 15.820405 3.379115c5.99025 0 11.622109-1.407965 16.869978-4.198295s10.137347-6.527837 14.617235-11.18692 8.652584-9.98375 12.441289-15.974001 7.21902-12.236494 10.265343-18.661933 5.759856-12.876478 8.089398-19.276318 4.377491-12.287693 6.067048-17.689158 3.046324-10.086148 4.044699-14.02845 1.689558-6.681433 2.099147-8.166195c2.611135-10.598135 4.81268-20.761081 6.681433-30.437639s2.764731-19.250719 2.764731-28.645684c0-2.303942-0.691183-3.60951-2.099147-3.891103l-37.19587 10.495738a19.916302 19.916302 0 0 1-5.094273 0.895977c-3.788705 0-6.963026-1.20317-9.522962-3.60951s-3.814305-5.862253-3.814304-10.342141 0.435189-8.114997 1.279968-10.879728 2.201545-4.81268 4.044698-6.220645 4.275093-2.329542 7.270219-2.76473 6.655834-0.665583 10.956526-0.665584h2.099147c2.40634-0.511987 5.478263-1.20317 9.21577-2.099147s7.935802-1.919952 12.518087-3.071923l14.694033-3.737507 15.743606-4.044699c5.299068-1.356766 10.572536-2.662333 15.820404-3.967901a1637.283868 1637.283868 0 0 1 23.474614-5.631859l5.99025-1.279968a22.01545 22.01545 0 0 1 3.737506-0.588785c1.20317 0 2.303942 0.358391 3.302318 1.049574s1.817555 1.58716 2.483138 2.636734a14.514837 14.514837 0 0 1 2.175945 7.423814c0 2.995125-1.151971 5.60626-3.455913 7.807805s-5.19667 4.121497-8.703783 5.785455-7.321417 3.097523-11.468513 4.351891l-11.622109 3.532712c-3.60951 1.100772-6.681433 2.175946-9.21577 3.225519s-3.967901 2.227144-4.275093 3.532712c-0.511987 4.40309-0.998375 9.292568-1.510362 14.694033s-1.049574 10.546936-1.638359 15.462013c-0.204795 1.20317-0.614385 4.095898-1.279968 8.703783s-1.561561 10.188545-2.687933 16.79318-2.559936 13.823654-4.198295 21.682658-3.532712 15.564411-5.631859 23.167421c-2.303942 8.294193-5.324667 17.151571-9.062174 26.546536s-8.191795 18.559536-13.337266 27.442514-10.982125 17.228369-17.484363 24.984975-13.542061 14.130847-21.145072 19.122722a58.929727 58.929727 0 0 1-23.19302 8.089398 61.336067 61.336067 0 0 1-9.369366 0.742381c-5.19667 0-10.828529-0.691183-16.869978-2.099147s-12.134097-3.404715-18.226744-5.99025-11.9805-5.734257-17.61236-9.369366-10.674933-7.705407-15.078023-12.159696-7.910202-9.21577-10.495738-14.335642-3.891103-10.444539-3.891102-16.050799c0-4.300692 0.435189-8.0126 1.279968-11.110122s2.227144-5.60626 4.121497-7.500612 4.428689-3.302317 7.57741-4.198295 7.014225-1.484763 11.519712-1.484763zM536.0122 682.120547c3.404715 1.20317 6.886228 2.611135 10.418939 4.198295s7.21902 3.123122 11.033324 4.582285 7.782205 2.662333 11.929302 3.686308 8.575786 1.510362 13.286068 1.510363c5.503862 0 11.058924-0.639984 16.639584-1.945552s11.084523-3.225519 16.434789-5.785455 10.470138-5.657459 15.385216-9.292568 9.394965-7.884603 13.490862-12.671683c4.505487-5.094273 8.242994-9.727757 11.238119-13.874853s5.427064-7.859004 7.270219-11.110122 3.174321-6.041449 3.9679-8.396591 1.20317-4.377491 1.20317-6.067048c0-2.508737-0.844779-4.684683-2.559936-6.527837s-3.967901-3.379116-6.835029-4.582285-6.067048-2.073548-9.676558-2.636734-7.347016-0.81918-11.238119-0.81918c-2.303942 0-4.991875 0.076798-8.089398 0.230395l-9.446164 0.460788-9.292567 0.38399a150.39624 150.39624 0 0 1-7.807805 0.153597c-3.302317 0-6.732632-0.38399-10.265343-1.126372s-7.014225-1.971151-10.41894-3.686308-6.553436-3.9935-9.446164-6.911827a35.403915 35.403915 0 0 1-8.831779-15.743607 24.626584 24.626584 0 0 1-0.742381-6.143846c0-2.40634 0.179196-4.684683 0.537586-6.835029s0.767981-4.223894 1.279968-6.220645c1.407965-4.991875 3.737507-10.086148 6.963026-15.231619s7.142221-10.162946 11.698908-15.078023 9.497363-9.650959 14.847628-14.258844 10.854129-8.934177 16.511588-12.978875 11.21252-7.705407 16.639584-10.956526 10.521337-6.01585 15.231619-8.319792c6.604635-3.19992 13.337267-5.529462 20.172295-6.963026s13.61886-2.175946 20.325892-2.175946c3.9935 0 7.807805 0.537587 11.391716 1.587161s6.78383 2.585535 9.522961 4.582285 4.915077 4.479888 6.527837 7.423815 2.40634 6.323042 2.40634 10.137346c0 2.201545-0.255994 4.044699-0.742381 5.555061s-1.151971 2.713532-1.945552 3.686308-1.663958 1.61276-2.636734 2.022349-1.919952 0.588785-2.918327 0.588786c-2.687933 0-5.171071-0.307192-7.423814-0.895978s-4.428689-1.279968-6.527837-2.022349-4.198295-1.459164-6.297443-2.099148-4.40309-0.972776-6.911827-0.972775c-7.398215 0-14.924427 1.484763-22.578635 4.428689s-15.103622 6.707032-22.348242 11.238119-14.105247 9.625359-20.556286 15.231619-12.236494 11.058924-17.330766 16.357991c-2.687933 2.79033-4.684683 5.60626-5.913453 8.39659s-1.868753 5.452664-1.868753 7.961401c0 3.711907 1.61276 6.604635 4.81268 8.703783s7.091023 3.148721 11.698907 3.148721c2.687933 0 5.759856-0.051199 9.138972-0.153596a796.140096 796.140096 0 0 0 20.761081-0.844779c3.353516-0.153596 6.323042-0.230394 8.934176-0.230394 6.195045 0 12.159696 0.870378 17.842754 2.636734s10.751731 4.326292 15.154822 7.731006 7.935802 7.628609 10.572535 12.671684 3.967901 10.828529 3.967901 17.330766c0 3.9935-0.588785 8.038199-1.791955 12.159696s-2.841529 8.217395-4.940677 12.364491-4.505487 8.242994-7.19342 12.287693-5.555061 8.0126-8.550186 11.929302c-5.401465 6.988625-11.417315 13.59326-18.073148 19.788305s-13.721257 11.59651-21.22187 16.204395-15.436414 8.242994-23.781805 10.956526-16.921177 4.044699-25.727357 4.044699a74.724532 74.724532 0 0 1-23.551411-4.121497c-3.891103-1.356766-7.577411-3.046324-11.033324-5.094273s-6.476638-4.377491-9.062174-6.963026-4.684683-5.478263-6.220644-8.626984-2.329542-6.579036-2.329542-10.265343c0-1.791955 0.281593-3.532712 0.819179-5.171071s1.868753-2.559936 4.070299-2.559936z" fill="#FFFFFF" p-id="4599"></path></svg>
                ''',
                '''
                  <svg t="1661223434812" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7611" width="200" height="200"><path d="M512 771.413333c-282.88 0-512-116.053333-512-259.413333s229.12-259.413333 512-259.413333S1024 368.64 1024 512s-229.12 259.413333-512 259.413333m-221.44-339.2c23.04 0 38.826667 4.266667 46.506667 13.226667 7.68 8.533333 9.386667 23.893333 5.546666 43.946667-4.266667 22.613333-12.373333 37.12-24.746666 46.506666-11.946667 9.386667-30.293333 14.08-55.04 14.08h-37.12l22.613333-117.76h42.24m-149.333333 236.8h61.44l14.506666-74.666666h52.48c23.04 0 41.813333-2.56 56.746667-7.253334 14.933333-5.12 28.586667-13.226667 40.96-24.746666 10.24-9.386667 18.346667-19.626667 24.746667-31.146667 6.4-11.093333 11.093333-23.893333 13.226666-37.546667 6.826667-33.28 2.133333-59.306667-14.08-77.653333-16.64-18.773333-42.24-27.733333-77.653333-27.733333H195.84l-54.613333 280.746666m309.333333-355.413333l-54.613333 280.746667h60.586666l31.573334-160.853334h48.64c15.36 0 25.6 2.56 30.293333 7.68 4.693333 5.12 5.546667 14.506667 2.986667 28.16l-24.32 125.013334h61.866666l25.173334-130.986667c5.546667-26.453333 1.28-45.653333-11.52-58.026667-12.8-11.52-36.266667-17.066667-70.4-17.066666h-54.186667L512 313.6h-61.44M768 432.213333c23.466667 0 38.826667 4.266667 46.506667 13.226667 7.68 8.533333 9.386667 23.893333 5.546666 43.946667-4.266667 22.613333-12.373333 37.12-24.32 46.506666-12.373333 9.386667-30.72 14.08-55.466666 14.08h-36.266667l21.333333-117.76h42.666667m-149.333333 236.8h61.44l14.506666-74.666666h52.053334c23.466667 0 42.666667-2.56 57.6-7.253334 14.933333-5.12 27.733333-13.226667 40.533333-24.746666 10.24-9.386667 18.773333-19.626667 24.746667-31.146667 6.4-11.093333 11.093333-23.893333 13.653333-37.546667 6.4-33.28 1.706667-59.306667-14.506667-77.653333-15.36-18.773333-42.24-27.733333-77.653333-27.733333h-117.333333l-55.04 280.746666z" fill="#1E88E5" p-id="7612"></path></svg>
                ''',
                '''
                <svg t="1661223461665" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="8610" width="200" height="200"><path d="M420.693333 85.333333C353.28 85.333333 298.666667 139.946667 298.666667 207.36v71.68h183.04c16.64 0 30.293333 24.32 30.293333 40.96H207.36C139.946667 320 85.333333 374.613333 85.333333 442.026667v161.322666c0 67.413333 54.613333 122.026667 122.026667 122.026667h50.346667v-114.346667c0-67.413333 54.186667-122.026667 121.6-122.026666h224c67.413333 0 122.026667-54.229333 122.026666-121.642667V207.36C725.333333 139.946667 670.72 85.333333 603.306667 85.333333z m-30.72 68.693334c17.066667 0 30.72 5.12 30.72 30.293333s-13.653333 38.016-30.72 38.016c-16.64 0-30.293333-12.8-30.293333-37.973333s13.653333-30.336 30.293333-30.336z" fill="#3C78AA" p-id="8611"></path><path d="M766.250667 298.666667v114.346666a121.6 121.6 0 0 1-121.6 121.984H420.693333A121.6 121.6 0 0 0 298.666667 656.597333v160a122.026667 122.026667 0 0 0 122.026666 122.026667h182.613334A122.026667 122.026667 0 0 0 725.333333 816.64v-71.68h-183.082666c-16.64 0-30.250667-24.32-30.250667-40.96h304.64A122.026667 122.026667 0 0 0 938.666667 581.973333v-161.28a122.026667 122.026667 0 0 0-122.026667-122.026666zM354.986667 491.221333l-0.170667 0.170667c0.512-0.085333 1.066667-0.042667 1.621333-0.170667z m279.04 310.442667c16.64 0 30.293333 12.8 30.293333 37.973333a30.293333 30.293333 0 0 1-30.293333 30.293334c-17.066667 0-30.72-5.12-30.72-30.293334s13.653333-37.973333 30.72-37.973333z" fill="#FDD835" p-id="8612"></path></svg>
                ''',
                '''
                <svg t="1661223508203" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="10255" width="200" height="200"><path d="M558.08 472.064c48.128 53.248-13.312 103.424-13.312 103.424s119.808-61.44 65.536-139.264c-51.2-71.68-91.136-107.52 122.88-232.448 0 1.024-335.872 86.016-175.104 268.288" fill="#FF0000" p-id="10256"></path><path d="M610.304 5.12s101.376 101.376-96.256 258.048C356.352 389.12 478.208 460.8 514.048 543.744 420.864 459.776 354.304 386.048 399.36 317.44 463.872 216.064 651.264 166.912 610.304 5.12" fill="#FF0000" p-id="10257"></path><path d="M720.896 757.76c183.296-95.232 98.304-188.416 39.936-175.104-15.36 3.072-21.504 5.12-21.504 5.12s5.12-8.192 16.384-11.264c117.76-40.96 207.872 120.832-37.888 186.368-1.024 0 2.048-3.072 3.072-5.12m-337.92 38.912s-37.888 21.504 26.624 29.696c76.8 8.192 117.76 8.192 202.752-8.192 0 0 23.552 15.36 53.248 26.624-191.488 80.896-433.152-5.12-282.624-48.128m-23.552-106.496s-43.008 31.744 23.552 37.888c82.944 8.192 149.504 10.24 261.12-13.312 0 0 16.384 16.384 40.96 24.576-231.424 68.608-490.496 5.12-325.632-49.152" fill="#6699FF" p-id="10258"></path><path d="M811.008 876.544s27.648 23.552-31.744 40.96c-111.616 34.816-460.8 45.056-558.08 2.048-34.816-15.36 31.744-35.84 51.2-40.96 21.504-5.12 34.816-3.072 34.816-3.072-38.912-28.672-251.904 52.224-107.52 75.776 390.144 62.464 712.704-28.672 611.328-74.752M400.384 578.56s-178.176 43.008-63.488 56.32c49.152 6.144 146.432 5.12 235.52-3.072 73.728-6.144 147.456-19.456 147.456-19.456s-26.624 11.264-45.056 24.576c-181.248 48.128-530.432 26.624-430.08-23.552 88.064-39.936 155.648-34.816 155.648-34.816" fill="#6699FF" p-id="10259"></path><path d="M418.816 1015.808c176.128 11.264 446.464-6.144 453.632-90.112 0 0-13.312 31.744-146.432 56.32-150.528 27.648-336.896 24.576-446.464 6.144 2.048 1.024 24.576 20.48 139.264 27.648" fill="#6699FF" p-id="10260"></path></svg>
                ''',
                '''
                <svg t="1661223536289" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="12724" width="200" height="200"><path d="M726.230046 393.060741s-16.462831-140.445857-168.680038-144.369641c-152.259857-3.881134-230.394328 105.345055-230.394328 261.443397 0 156.098341 86.408535 280.977014 234.48871 280.977014 148.122825 0 164.628305-156.098341 164.628306-156.098341l283.877201 15.609834s16.67608 141.000305-102.103669 248.563151C789.22383 1006.749001 643.446745 1024.320727 541.598975 1023.59568c-101.84777-0.767697-243.018674 1.450094-379.583398-126.627316C25.578803 768.976254 2.334651 644.566729 2.334651 522.374995c0-122.234384 25.888441-284.090451 188.256306-406.879282C300.883391 32.157964 412.753869 1.407444 524.624347 1.407444 991.639876 1.364794 1022.944843 395.790329 1022.944843 395.790329z" p-id="12725" fill="#f4ea2a"></path></svg>
                ''',
                '''
                <svg t="1661223561040" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13447" width="200" height="200"><path d="M403.456 880.64c-202.752 0-368.64-165.888-368.64-368.64s165.888-368.64 368.64-368.64c116.736 0 223.232 54.272 292.864 145.408l-133.12 78.848c-40.96-44.032-98.304-70.656-158.72-70.656-117.76 0-215.04 96.256-215.04 215.04s96.256 215.04 215.04 215.04c60.416 0 117.76-26.624 158.72-70.656l134.144 78.848C628.736 826.368 520.192 880.64 403.456 880.64z" fill="#1D88E5" p-id="13448"></path><path d="M772.096 542.72h-60.416v61.44h-62.464v-61.44h-60.416v-61.44h60.416v-61.44h62.464v61.44h60.416v61.44z m217.088 0h-62.464v61.44h-60.416v-61.44h-62.464v-61.44h62.464v-61.44h60.416v61.44h62.464v61.44z" fill="#1D88E5" p-id="13449"></path></svg>
                ''' ,
                '''
                <svg t="1661223608805" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="14379" width="200" height="200"><path d="M615.6 123.6h165.5L512 589.7 242.9 123.6H63.5L512 900.4l448.5-776.9z" fill="#41B883" p-id="14380"></path><path d="M781.1 123.6H615.6L512 303 408.4 123.6H242.9L512 589.7z" fill="#34495E" p-id="14381"></path></svg>
                ''',
                '''
                <svg t="1661223659013" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="18886" width="200" height="200"><path d="M512 512m-385.7322666666667 0a385.7322666666667 385.7322666666667 0 1 0 771.4645333333334 0 385.7322666666667 385.7322666666667 0 1 0-771.4645333333334 0Z" fill="#0B5975" p-id="18887"></path><path d="M420.02773333333334 565.0773333333333c0 14.72-1.0752 25.250133333333334-3.2 31.581866666666667a49.638400000000004 49.638400000000004 0 0 1-10.641066666666667 17.766399999999997c-4.9749333333333325 5.5040000000000004-11.989333333333333 9.429333333333332-20.940800000000003 11.784533333333334-8.994133333333334 2.3637333333333337-19.7376 3.5839999999999996-32.187733333333334 3.5839999999999996-13.474133333333333 0-24.584533333333333-1.2458666666666667-33.3056-3.7376-8.7552-2.5002666666666666-15.658666666666667-6.749866666666667-20.778666666666666-12.7488a56.430933333333336 56.430933333333336 0 0 1-11.2128-21.137066666666666c-2.3552-8.081066666666667-3.5328-21.0176-3.5328-38.71573333333333v-9.736533333333334h56.09813333333333v23.936c0 8.746666666666666 0.5717333333333333 14.72 1.6810666666666667 17.979733333333336 1.1434666666666666 3.2341333333333333 4.0447999999999995 4.846933333333332 8.789333333333333 4.846933333333332 7.978666666666667 0 11.980799999999999-6.9632 11.980799999999999-20.949333333333335 0-8.9856-0.5034666666666666-15.7184-1.5189333333333332-20.1984-1.0069333333333332-4.462933333333334-3.968-9.216000000000001-8.96-14.199466666666666-23.227733333333333-16.7424-39.15946666666667-29.201066666666666-47.872-37.41866666666667-14.711466666666666-13.730133333333333-22.084266666666668-33.928533333333334-22.084266666666668-60.60373333333334 0-9.4976 0.5717333333333333-17.706666666666667 1.6810666666666667-24.712533333333333 1.1093333333333333-6.971733333333333 3.4304-13.568 6.9376-19.84a37.9904 37.9904 0 0 1 20.949333333333335-16.836266666666667c8.951466666666667-2.9951999999999996 20.940800000000003-4.471466666666667 35.891200000000005-4.471466666666667 14.481066666666667 0 25.898666666666667 0.8789333333333332 34.24426666666667 2.6282666666666668 8.3456 1.7493333333333332 15.283199999999999 5.589333333333333 20.778666666666666 11.579733333333333 5.495466666666667 5.998933333333333 9.088 13.610666666666667 10.837333333333333 22.826666666666664 1.0154666666666665 5.495466666666667 1.4848 15.590399999999999 1.4848 30.3104v3.3706666666666667h-55.68853333333333v-11.588266666666668c0-6.7328-0.13653333333333334-10.871466666666667-0.3669333333333333-12.356266666666667-1.0154666666666665-5.725866666666667-4.104533333333333-8.618666666666666-9.361066666666666-8.618666666666666-7.236266666666666 0-10.845866666666666 6.7328-10.845866666666666 20.1984 0 10.478933333333334 1.6896 17.979733333333336 5.051733333333333 22.459733333333332 3.3706666666666667 4.471466666666667 13.764266666666666 12.356266666666667 31.249066666666664 23.569066666666668 19.191466666666667 12.219733333333332 31.786666666666665 25.181866666666668 37.77706666666666 38.92053333333333 4.701866666666667 10.726399999999998 7.0656 27.554133333333333 7.0656 50.525866666666666z m178.83306666666667 95.01013333333333h-50.14186666666667c-17.2032 0-28.185599999999997-2.3637333333333337-32.93013333333333-7.1168-3.7034666666666665-3.7376-5.5808-11.8528-5.5808-24.337066666666665a77.48266666666666 77.48266666666666 0 0 1-18.722133333333332-2.2357333333333336 57.6 57.6 0 0 1-17.954133333333335-8.251733333333332c-13.226666666666667-8.465066666666667-21.717333333333332-19.6864-25.4464-33.664-2.4917333333333334-9.216000000000001-3.7034666666666665-25.4208-3.7034666666666665-48.6144v-79.6928c0-11.204266666666665 0.26453333333333334-20.377599999999997 0.9045333333333333-27.477333333333334a83.54133333333333 83.54133333333333 0 0 1 4.309333333333333-20.4032c4.983466666666667-12.962133333333332 13.405866666666666-22.391466666666666 25.250133333333334-28.245333333333335 11.8528-5.8624 26.50453333333333-8.789333333333333 43.92959999999999-8.789333333333333 20.7104 0 37.54666666666667 3.4389333333333334 50.508799999999994 10.308266666666666 12.970666666666666 6.8352 21.725866666666665 17.5104 26.197333333333333 31.991466666666668 1.7493333333333332 5.2223999999999995 2.7221333333333333 12.2624 3.003733333333333 21.11146666666667 0.2304 8.8576 0.3754666666666666 15.522133333333333 0.3754666666666666 20.044800000000002v83.80586666666666c0 20.932266666666663-0.8874666666666666 35.413333333333334-2.6453333333333333 43.400533333333335-3.694933333333333 17.169066666666666-16.554666666666666 28.416-38.519466666666666 33.664 0 6.229333333333333 1.1178666666666668 9.966933333333333 3.3792 11.2128 2.2272 1.2373333333333332 7.2448 1.8517333333333332 14.941866666666666 1.8517333333333332h22.843733333333333v31.4368z m-66.98666666666666-95.01013333333333V431.49653333333333c0-7.739733333333334-0.5888-13.3376-1.8432-16.836266666666667-1.2458666666666667-3.4986666666666664-4.010666666666666-5.248-8.251733333333332-5.248-4.727466666666667 0-7.68 1.8773333333333333-8.797866666666666 5.623466666666667-1.1008 3.7376-1.6725333333333334 11.204266666666665-1.6725333333333334 22.459733333333332v132.05333333333334c0 6.7328 0.6314666666666666 11.946666666666665 1.8858666666666666 15.735466666666667 1.2458666666666667 3.7034666666666665 3.9765333333333337 5.5808 8.2176 5.5808 6.971733333333333-0.008533333333333334 10.461866666666666-8.593066666666665 10.461866666666666-25.787733333333332z m221.86666666666667 63.5648H626.1589333333333V371.2597333333333h66.9696v206.13119999999998h60.6208v51.251200000000004z" fill="#353535" p-id="18888"></path><path d="M420.02773333333334 561.3994666666666c0 14.72-1.0752 25.250133333333334-3.2 31.581866666666667a49.638400000000004 49.638400000000004 0 0 1-10.641066666666667 17.766399999999997c-4.9749333333333325 5.5040000000000004-11.989333333333333 9.429333333333332-20.940800000000003 11.784533333333334-8.994133333333334 2.3637333333333337-19.7376 3.5839999999999996-32.187733333333334 3.5839999999999996-13.474133333333333 0-24.584533333333333-1.2458666666666667-33.3056-3.7376-8.7552-2.5002666666666666-15.658666666666667-6.749866666666667-20.778666666666666-12.7488a56.430933333333336 56.430933333333336 0 0 1-11.2128-21.137066666666666c-2.3552-8.081066666666667-3.5328-21.0176-3.5328-38.71573333333333v-9.736533333333334h56.09813333333333v23.936c0 8.746666666666666 0.5717333333333333 14.72 1.6810666666666667 17.979733333333336 1.1434666666666666 3.2341333333333333 4.0447999999999995 4.846933333333332 8.789333333333333 4.846933333333332 7.978666666666667 0 11.980799999999999-6.9632 11.980799999999999-20.949333333333335 0-8.9856-0.5034666666666666-15.7184-1.5189333333333332-20.1984-1.0069333333333332-4.462933333333334-3.968-9.216000000000001-8.96-14.199466666666666-23.227733333333333-16.7424-39.15946666666667-29.201066666666666-47.872-37.41866666666667-14.711466666666666-13.730133333333333-22.084266666666668-33.928533333333334-22.084266666666668-60.60373333333334 0-9.4976 0.5717333333333333-17.706666666666667 1.6810666666666667-24.712533333333333 1.1093333333333333-6.971733333333333 3.4304-13.568 6.9376-19.84a37.9904 37.9904 0 0 1 20.949333333333335-16.836266666666667c8.951466666666667-2.9951999999999996 20.940800000000003-4.471466666666667 35.891200000000005-4.471466666666667 14.481066666666667 0 25.898666666666667 0.8789333333333332 34.24426666666667 2.6282666666666668 8.3456 1.7493333333333332 15.283199999999999 5.589333333333333 20.778666666666666 11.579733333333333 5.495466666666667 5.998933333333333 9.088 13.610666666666667 10.837333333333333 22.826666666666664 1.0154666666666665 5.495466666666667 1.4848 15.590399999999999 1.4848 30.3104v3.3706666666666667h-55.68853333333333v-11.588266666666668c0-6.7328-0.13653333333333334-10.871466666666667-0.3669333333333333-12.356266666666667-1.0154666666666665-5.725866666666667-4.104533333333333-8.618666666666666-9.361066666666666-8.618666666666666-7.236266666666666 0-10.845866666666666 6.7328-10.845866666666666 20.1984 0 10.478933333333334 1.6896 17.979733333333336 5.051733333333333 22.459733333333332 3.3706666666666667 4.471466666666667 13.764266666666666 12.356266666666667 31.249066666666664 23.569066666666668 19.191466666666667 12.219733333333332 31.786666666666665 25.181866666666668 37.77706666666666 38.92053333333333 4.701866666666667 10.726399999999998 7.0656 27.562666666666665 7.0656 50.525866666666666z m178.83306666666667 95.01866666666666h-50.14186666666667c-17.2032 0-28.185599999999997-2.3637333333333337-32.93013333333333-7.1168-3.7034666666666665-3.7376-5.5808-11.8528-5.5808-24.337066666666665a77.48266666666666 77.48266666666666 0 0 1-18.722133333333332-2.2357333333333336 57.6 57.6 0 0 1-17.954133333333335-8.251733333333332c-13.226666666666667-8.465066666666667-21.717333333333332-19.6864-25.4464-33.664-2.4917333333333334-9.216000000000001-3.7034666666666665-25.4208-3.7034666666666665-48.6144v-79.6928c0-11.204266666666665 0.26453333333333334-20.377599999999997 0.9045333333333333-27.477333333333334a83.54133333333333 83.54133333333333 0 0 1 4.309333333333333-20.4032c4.983466666666667-12.962133333333332 13.405866666666666-22.391466666666666 25.250133333333334-28.245333333333335 11.8528-5.8624 26.50453333333333-8.789333333333333 43.92959999999999-8.789333333333333 20.7104 0 37.54666666666667 3.4389333333333334 50.508799999999994 10.308266666666666 12.970666666666666 6.8352 21.725866666666665 17.5104 26.197333333333333 31.991466666666668 1.7493333333333332 5.2223999999999995 2.7221333333333333 12.2624 3.003733333333333 21.11146666666667 0.2304 8.8576 0.3754666666666666 15.522133333333333 0.3754666666666666 20.044800000000002v83.80586666666666c0 20.932266666666663-0.8874666666666666 35.413333333333334-2.6453333333333333 43.400533333333335-3.694933333333333 17.169066666666666-16.554666666666666 28.416-38.519466666666666 33.664 0 6.229333333333333 1.1178666666666668 9.966933333333333 3.3792 11.2128 2.2272 1.2373333333333332 7.2448 1.8517333333333332 14.941866666666666 1.8517333333333332h22.843733333333333v31.4368z m-66.98666666666666-95.01866666666666V427.8186666666667c0-7.739733333333334-0.5888-13.3376-1.8432-16.836266666666667-1.2458666666666667-3.4986666666666664-4.010666666666666-5.248-8.251733333333332-5.248-4.727466666666667 0-7.68 1.8773333333333333-8.797866666666666 5.623466666666667-1.1008 3.7376-1.6725333333333334 11.204266666666665-1.6725333333333334 22.459733333333332v132.05333333333334c0 6.7328 0.6314666666666666 11.946666666666665 1.8858666666666666 15.735466666666667 1.2458666666666667 3.7034666666666665 3.9765333333333337 5.5808 8.2176 5.5808 6.971733333333333 0 10.461866666666666-8.584533333333333 10.461866666666666-25.787733333333332z m221.86666666666667 63.5648H626.1589333333333V367.58186666666666h66.9696v206.13119999999998h60.6208v51.251200000000004z" fill="#FFFFFF" p-id="18889"></path></svg>
                ''',
                '''
                <svg t="1661223736382" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="24407" width="200" height="200"><path d="M924 0H100C45 0 0 45 0 100v824c0 55 45 100 100 100h824c55 0 100-45 100-100V100c0-55-45-100-100-100z m55 924c0 14.58-5.75 28.36-16.19 38.81S938.58 979 924 979H100c-14.58 0-28.36-5.75-38.81-16.19S45 938.58 45 924V315h934v609zM45 270V100c0-14.58 5.75-28.36 16.19-38.81C71.64 50.75 85.42 45 100 45h824c14.58 0 28.36 5.75 38.81 16.19C973.25 71.64 979 85.42 979 100v170H45z" fill="#1296db" p-id="24408"></path><path d="M157.5 157.5m-22.5 0a22.5 22.5 0 1 0 45 0 22.5 22.5 0 1 0-45 0Z" fill="#1296db" p-id="24409"></path><path d="M292.5 157.5m-22.5 0a22.5 22.5 0 1 0 45 0 22.5 22.5 0 1 0-45 0Z" fill="#1296db" p-id="24410"></path><path d="M427.5 157.5m-22.5 0a22.5 22.5 0 1 0 45 0 22.5 22.5 0 1 0-45 0Z" fill="#1296db" p-id="24411"></path><path d="M305.24 648.04c0-72.79 52.9-115.45 118.87-115.45 35.83 0 60.61 13.72 76.68 28.34l-26.45 28.04c-12.05-10.44-26.12-18.5-48.55-18.5-41.19 0-69.98 28.64-69.98 76.07 0 48.03 24.78 76.97 73.33 76.97 12.05 0 24.11-2.98 31.14-8.35V671.6H416.4v-36.1h88.06v99.64c-16.74 14.62-45.87 26.55-80.36 26.55-67.63 0.01-118.86-39.97-118.86-113.65zM541.97 674.29c0-55.79 43.19-88.01 90.07-88.01 46.88 0 90.07 32.22 90.07 88.01 0 55.19-43.19 87.41-90.07 87.41-46.88 0-90.07-32.22-90.07-87.41z m129.92 0c0-31.62-14.4-52.21-39.85-52.21-25.45 0-39.85 20.58-39.85 52.21 0 31.32 14.4 51.61 39.85 51.61 25.45 0 39.85-20.29 39.85-51.61z" fill="#1296db" p-id="24412"></path></svg>
                ''',
                '''
                <svg t="1661223848163" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="25946" width="200" height="200"><path d="M640 0 640 256 896 256Z" p-id="25947" fill="#13227a"></path><path d="M896 448 64 448 64 64c0-35.328 28.608-64 64-64l448 0 0 320 320 0L896 448z" p-id="25948" fill="#13227a"></path><path d="M896 960c0 35.328-28.608 64-64 64L128 1024c-35.392 0-64-28.672-64-64l0 0 0-64 832 0L896 960 896 960z" p-id="25949" fill="#13227a"></path><path d="M64 512l128 0 0 64-128 0 0-64Z" p-id="25950" fill="#13227a"></path><path d="M0 576l64 0 0 64-64 0 0-64Z" p-id="25951" fill="#13227a"></path><path d="M64 640l64 0 0 64-64 0 0-64Z" p-id="25952" fill="#13227a"></path><path d="M128 704l64 0 0 64-64 0 0-64Z" p-id="25953" fill="#13227a"></path><path d="M0 768l128 0 0 64-128 0 0-64Z" p-id="25954" fill="#13227a"></path><path d="M384 640 320 640 320 512 256 512 256 832 320 832 320 704 384 704 384 832 448 832 448 512 384 512Z" p-id="25955" fill="#13227a"></path><path d="M512 576 512 768 512 832 576 832 704 832 704 768 576 768 576 704 704 704 704 640 576 640 576 576 704 576 704 512 512 512Z" p-id="25956" fill="#13227a"></path><path d="M832 768 832 512 768 512 768 832 832 832Z" p-id="25957" fill="#13227a"></path><path d="M896 512l64 0 0 320-64 0 0-320Z" p-id="25958" fill="#13227a"></path></svg>
                '''

            ],
        },
        {
            "type": ['txt'],
            "desc": "txt文件",
            "class": [
                '''
                <svg t="1661222055820" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4752" width="200" height="200"><path d="M192 0h448.1536L960 320v576c0 70.6944-57.3056 128-128 128H192C121.3056 1024 64 966.6944 64 896V128C64 57.3056 121.3056 0 192 0z" fill="#2696FF" p-id="4753"></path><path d="M417.7536 546.176h-60.8256v170.5728h-40.9216V546.176H256V512h161.7536v34.176z m94.3872 36.416L549.376 512h47.0528l-57.8304 101.5296 59.328 103.2192h-47.6032l-38.1824-71.7184-38.1952 71.7184h-47.6032l59.3408-103.2192L427.8528 512h47.0528l37.2352 70.592zM768 546.176h-60.8256v170.5728H666.24V546.176h-60.0064V512H768v34.176z" fill="#FFFFFF" opacity=".9" p-id="4754"></path><path d="M640 0l320 320H768c-70.6944 0-128-57.3056-128-128V0z" fill="#8FC6FE" p-id="4755"></path></svg>
                '''
            ],
        },
        {
            "type": ['mp3', 'wav'],
            "desc": "音频文件",
            "class": [
                '''
               <svg t="1661222359337" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="22932" width="200" height="200"><path d="M967.111111 281.6V910.222222c0 62.862222-50.915556 113.777778-113.777778 113.777778H170.666667c-62.862222 0-113.777778-50.915556-113.777778-113.777778V113.777778c0-62.862222 50.915556-113.777778 113.777778-113.777778h514.844444L967.111111 281.6z" fill="#A15FDE" p-id="22933"></path><path d="M685.511111 196.266667V0L967.111111 281.6H770.844444a85.333333 85.333333 0 0 1-85.333333-85.333333" fill="#C386F0" p-id="22934"></path><path d="M669.980444 426.268444v236.999112c0 26.254222-31.857778 47.587556-71.082666 47.587555-39.253333 0-70.741333-21.333333-70.741334-47.587555 0-26.282667 31.516444-47.587556 70.741334-47.587556 14.848 0 28.728889 3.100444 40.163555 8.334222v-165.916444l-205.767111 48.497778v211.057777c0 26.254222-32.142222 47.559111-71.992889 47.559111-39.850667 0-72.305778-21.333333-72.305777-47.559111 0-26.282667 32.426667-47.587556 72.305777-47.587555a96.711111 96.711111 0 0 1 41.102223 8.647111V474.168889c0-14.222222 9.870222-26.88 23.779555-29.980445l205.795556-47.900444a30.862222 30.862222 0 0 1 38.001777 29.980444" fill="#FFFFFF" p-id="22935"></path></svg>               
               ''',
                '''
                 <svg t="1661222359337" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="22932" width="200" height="200"><path d="M967.111111 281.6V910.222222c0 62.862222-50.915556 113.777778-113.777778 113.777778H170.666667c-62.862222 0-113.777778-50.915556-113.777778-113.777778V113.777778c0-62.862222 50.915556-113.777778 113.777778-113.777778h514.844444L967.111111 281.6z" fill="#A15FDE" p-id="22933"></path><path d="M685.511111 196.266667V0L967.111111 281.6H770.844444a85.333333 85.333333 0 0 1-85.333333-85.333333" fill="#C386F0" p-id="22934"></path><path d="M669.980444 426.268444v236.999112c0 26.254222-31.857778 47.587556-71.082666 47.587555-39.253333 0-70.741333-21.333333-70.741334-47.587555 0-26.282667 31.516444-47.587556 70.741334-47.587556 14.848 0 28.728889 3.100444 40.163555 8.334222v-165.916444l-205.767111 48.497778v211.057777c0 26.254222-32.142222 47.559111-71.992889 47.559111-39.850667 0-72.305778-21.333333-72.305777-47.559111 0-26.282667 32.426667-47.587556 72.305777-47.587555a96.711111 96.711111 0 0 1 41.102223 8.647111V474.168889c0-14.222222 9.870222-26.88 23.779555-29.980445l205.795556-47.900444a30.862222 30.862222 0 0 1 38.001777 29.980444" fill="#FFFFFF" p-id="22935"></path></svg>               
                ''',
        ],
        },
        {
            "type": ['png', 'jpg','gif', 'psd'],
            "desc": "图片文件",
            "class": [
                '''
               <svg t="1661222573582" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="25943" width="200" height="200"><path d="M192 384h640a42.666667 42.666667 0 0 1 42.666667 42.666667v362.666666a42.666667 42.666667 0 0 1-42.666667 42.666667H192v106.666667a21.333333 21.333333 0 0 0 21.333333 21.333333h725.333334a21.333333 21.333333 0 0 0 21.333333-21.333333V308.821333L949.909333 298.666667h-126.528A98.048 98.048 0 0 1 725.333333 200.618667V72.661333L716.714667 64H213.333333a21.333333 21.333333 0 0 0-21.333333 21.333333v298.666667zM128 832H42.666667a42.666667 42.666667 0 0 1-42.666667-42.666667V426.666667a42.666667 42.666667 0 0 1 42.666667-42.666667h85.333333V85.333333a85.333333 85.333333 0 0 1 85.333333-85.333333h530.026667L1024 282.453333V938.666667a85.333333 85.333333 0 0 1-85.333333 85.333333H213.333333a85.333333 85.333333 0 0 1-85.333333-85.333333v-106.666667zM92.309333 472.490667V746.666667h40.32v-105.216h61.013334c59.989333 0 89.962667-28.416 89.962666-84.864 0-56.064-29.973333-84.096-89.28-84.096H92.309333z m40.32 38.4h58.602667c17.578667 0 30.677333 3.456 38.954667 10.752 8.277333 6.912 12.757333 18.432 12.757333 34.944 0 16.512-4.138667 28.416-12.416 35.712-8.277333 6.912-21.376 10.752-39.296 10.752H132.629333v-92.16z m185.450667-38.4V746.666667h40.32v-200.448h1.386667L482.858667 746.666667h39.296V472.490667H481.493333v197.76h-1.365333l-121.685333-197.76h-40.32z m359.189333-5.376c-36.522667 0-65.493333 13.824-86.869333 42.24-20.330667 26.496-30.314667 60.288-30.314667 101.376 0 40.704 9.984 74.112 30.314667 99.84 21.717333 27.648 52.053333 41.472 91.349333 41.472 22.08 0 41.728-3.072 59.648-9.216a138.026667 138.026667 0 0 0 44.8-26.112V600.746667H680.746667v38.4h65.152v56.448a108.373333 108.373333 0 0 1-26.538667 12.672 115.669333 115.669333 0 0 1-33.088 4.608c-29.994667 0-52.053333-9.216-66.197333-27.648-13.098667-17.28-19.626667-42.24-19.626667-74.496 0-33.792 7.210667-59.52 22.037333-77.952 13.44-17.664 31.722667-26.112 54.826667-26.112 18.602667 0 33.770667 4.224 45.141333 13.056 11.029333 8.832 18.624 21.888 22.058667 39.552h40.682667c-4.48-30.72-15.509333-53.376-33.088-68.736-18.282667-15.744-43.093333-23.424-74.816-23.424z" fill="#FCCC00" p-id="25944"></path></svg>
                 ''',
                '''
                <svg t="1661222647080" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="28001" width="200" height="200"><path d="M704 0H192a64 64 0 0 0-64 64v320h576a64 64 0 0 1 64 64v416a64 64 0 0 1-64 64H128v32a64 64 0 0 0 64 64h768a64 64 0 0 0 64-64V320L704 0z" fill="#EAEAEA" p-id="28002"></path><path d="M704 0v256a64 64 0 0 0 64 64h256L704 0z" fill="#434854" p-id="28003"></path><path d="M768 320l256 256v-256z" fill="" p-id="28004"></path><path d="M704 832a32 32 0 0 1-32 32H32a32 32 0 0 1-32-32V480a32 32 0 0 1 32-32h640a32 32 0 0 1 32 32v352z" fill="#3AAD73" p-id="28005"></path><path d="M320 544H272a16 16 0 0 0-16 16v192a16 16 0 0 0 32 0V672h32a64 64 0 0 0 0-128z m0 96H288v-64h32a32 32 0 1 1 0 64zM576 672h-80a16 16 0 0 0 0 32H544a32 32 0 0 1-32 32h-32a32 32 0 0 1-32-32v-96a32 32 0 0 1 32-32h32a32 32 0 0 1 32 32 16 16 0 0 0 32 0 64 64 0 0 0-64-64h-32a64 64 0 0 0-64 64v96a64 64 0 0 0 64 64h32a64 64 0 0 0 64-64 16 16 0 0 0 0-32zM208 544a16 16 0 0 0-16 16V704a32 32 0 1 1-64 0v-16a16 16 0 0 0-32 0v16a64 64 0 0 0 128 0v-144a16 16 0 0 0-16-16z" fill="#FFFFFF" p-id="28006"></path></svg>
                ''',
                '''
                <svg t="1661222688752" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="29846" width="200" height="200"><path d="M704 0H192a64 64 0 0 0-64 64v320h576a64 64 0 0 1 64 64v416a64 64 0 0 1-64 64H128v32a64 64 0 0 0 64 64h768a64 64 0 0 0 64-64V320z" fill="#EAEAEA" p-id="29847"></path><path d="M704 0v256a64 64 0 0 0 64 64h256z" fill="#434854" p-id="29848"></path><path d="M768 320l256 256V320H768z" opacity=".1" p-id="29849"></path><path d="M704 832a32 32 0 0 1-32 32H32a32 32 0 0 1-32-32V480a32 32 0 0 1 32-32h640a32 32 0 0 1 32 32z" fill="#CC7598" p-id="29850"></path><path d="M288 672h-80a16 16 0 0 0 0 32h48a32 32 0 0 1-32 32h-32a32 32 0 0 1-32-32v-96a32 32 0 0 1 32-32h32a32 32 0 0 1 32 32 16 16 0 0 0 32 0 64 64 0 0 0-64-64h-32a64 64 0 0 0-64 64v96a64 64 0 0 0 64 64h32a64 64 0 0 0 64-64 16 16 0 0 0 0-32z m96 80a16 16 0 0 1-16 16 16 16 0 0 1-16-16V560a16 16 0 0 1 16-16 16 16 0 0 1 16 16z m176-208h-96a16 16 0 0 0-16 16v192a16 16 0 0 0 32 0v-80h48a16 16 0 0 0 0-32h-48v-64h80a16 16 0 0 0 0-32z" fill="#FFFFFF" p-id="29851"></path></svg>
                ''',
                '''
                <svg t="1661222729996" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="31600" width="200" height="200"><path d="M748 183.5V0H96v1024h836V183.5z" fill="#4D9BF7" p-id="31601"></path><path d="M932 184H748V0" fill="#8DD1FF" p-id="31602"></path><path d="M299.5 344.9H359v315.7h-59.5V344.9z m27.2 135.9h100.9c7.1 0 13.4-1.6 18.8-4.9 5.4-3.3 9.7-7.8 12.7-13.8 3-5.9 4.6-12.7 4.6-20.4 0-7.8-1.5-14.7-4.5-20.7s-7.2-10.6-12.6-13.9c-5.4-3.3-11.8-4.9-19-4.9H326.7v-57.3h99.4c19.7 0 37 4 52 12s26.6 19.4 34.8 34c8.3 14.6 12.4 31.6 12.4 50.8 0 19.3-4.1 36.1-12.4 50.7-8.3 14.5-19.9 25.8-34.8 33.8-15 8-32.3 11.9-52 11.9h-99.4v-57.3zM627.1 663.8s-6.4-1.2-19.1-3.6c-12.7-2.4-24.7-5.9-35.8-10.5-11.1-4.6-21-10.2-29.5-16.7l36.7-45.8c10.9 6.9 22.2 12.3 34.1 16.1 11.9 3.8 23.2 5.6 33.9 5.6 13.9 0 24.7-1.6 32.3-4.7 7.7-3.1 11.5-7.4 11.5-12.9 0-5.1-1.7-8.9-5-11.5-3.3-2.6-7.6-4.5-12.8-5.5-5.2-1.1-12.5-2.1-21.9-2.9-2.6-0.3-5.2-0.6-7.9-0.9l-8.1-0.9c-0.6-0.1-1.2-0.3-1.8-0.3-0.7-0.1-1.3-0.1-1.8-0.1-16.8-2.2-30.3-4.8-40.4-8-10.1-3.2-18.7-9.3-25.7-18.3s-10.5-22.2-10.5-39.4c0-15.1 3.6-27.9 10.9-38.6 7.2-10.7 17.7-18.8 31.5-24.4 13.7-5.6 30.4-8.4 49.9-8.4 11.4 0 22.8 1.2 34.2 3.5 11.4 2.3 22.3 5.6 32.7 10 10.4 4.3 20 9.6 28.9 15.6L708 504.4c-9.8-5.5-20.1-9.8-30.8-12.8s-21-4.6-30.8-4.6c-12 0-21.3 1.4-28 4.1-6.7 2.8-10 6.6-10 11.5 0 3.8 1.8 6.7 5.3 8.8 3.5 2.1 8 3.6 13.2 4.6 5.3 0.9 13 2 23.1 3.1 1.3 0.1 2.6 0.3 3.9 0.4 1.3 0.1 2.6 0.3 3.9 0.4 0.6 0.1 1.2 0.2 2 0.2 0.7 0 1.4 0.1 2 0.2 17.5 2 31.8 4.6 42.8 7.8 11 3.2 20.4 9.6 28.1 19.1 7.7 9.6 11.6 23.6 11.6 42.1 0 15.6-3.8 29-11.3 40.2-7.5 11.1-18.5 19.6-33 25.5-14.5 5.9-31.9 8.8-52.3 8.8h-20.6z" fill="#FFFFFF" p-id="31603"></path></svg>
                '''
            ],
        },
        {
            "type": ['zip', 'rar', '7z', 'jar'],
            "desc": "压缩包文件",
            "class": [
                '''
              <svg t="1661223108146" class="icon" viewBox="0 0 1140 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="37500" width="200" height="200"><path d="M1079.049 1022.302H56.746C25.56 1022.302 0 1000.524 0 974.078v-292.54h1135.575v292.39c0 26.451-25.566 48.23-56.746 48.23l0.22 0.144z" fill="#5ACC9B" p-id="37501"></path><path d="M56.746 0H1079.05c31.187 0 56.746 21.786 56.746 48.224v292.541H0.22V48.382C0.22 21.923 25.786 0.152 56.973 0.152L56.746 0z" fill="#6CCBFF" p-id="37502"></path><path d="M0.22 340.84h1135.423v340.622H0.22z" fill="#FFD766" p-id="37503"></path><path d="M378.694 0.22H757.17v1021.863H378.694z" fill="#FF5562" p-id="37504"></path><path d="M487.445 56.973h75.714v56.815h-75.714V56.966zM563.159 0.213h75.707v56.76h-75.707V0.22z m0 113.568h75.707v56.595h-75.707V113.78z m-75.714 56.595h75.714v56.746h-75.714v-56.746z m75.714 56.746h75.707v56.822h-75.707v-56.822z m-75.714 56.822h75.714v56.814h-75.714v-56.814z m75.714 56.746h75.707v56.746h-75.707V340.69z m-75.714 56.746h75.714v56.815h-75.714v-56.815z m75.714 56.815h75.707v56.897h-75.707V454.25z m-75.714 56.897h75.714v56.746h-75.714v-56.746z m75.714 56.746h75.707v56.815h-75.707v-56.815z m-75.714 56.815h75.714v56.821h-75.714V624.71z m75.714 56.746h75.707V738.2h-75.707v-56.746zM487.445 738.2h75.714v56.822h-75.714V738.2z m75.714 56.822h75.707v56.89h-75.707v-56.89z m-75.714 56.89h75.714v56.746h-75.714v-56.746z m0 113.568h75.714v56.815h-75.714V965.48z m75.714-56.822h75.707v56.822h-75.707v-56.822z" fill="#FFFFFF" p-id="37505"></path></svg>
                ''',
                '''
               <svg t="1661223166632" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3854" width="200" height="200"><path d="M992.44 247.21v485.97H32.56V247.21c0-118.55 96.1-214.66 214.66-214.66h530.56c118.55 0.01 214.66 96.12 214.66 214.66z" fill="#FDF1F2" p-id="3855"></path><path d="M992.44 733.18v44.59c0 118.56-96.11 214.67-214.66 214.67H247.22c-118.56 0-214.66-96.11-214.66-214.67v-44.59h959.88z" fill="#FA5B43" p-id="3856"></path><path d="M332.16 928.74V804.26h55.19c11.09 0 19.53 1.12 25.3 3.35 5.77 2.24 10.39 6.18 13.84 11.84 3.45 5.66 5.18 11.92 5.18 18.77 0 8.83-2.86 16.27-8.58 22.33-5.72 6.06-14.55 9.91-26.49 11.55 4.36 2.09 7.67 4.16 9.93 6.2 4.81 4.42 9.37 9.93 13.67 16.56l21.65 33.88h-20.72l-16.47-25.9c-4.81-7.47-8.78-13.19-11.89-17.15-3.11-3.96-5.9-6.74-8.36-8.32-2.46-1.58-4.97-2.69-7.51-3.31-1.87-0.4-4.92-0.59-9.17-0.59h-19.1v55.28h-16.47z m16.47-69.55h35.41c7.53 0 13.42-0.78 17.66-2.33 4.25-1.56 7.47-4.05 9.68-7.47s3.31-7.15 3.31-11.17c0-5.89-2.14-10.73-6.41-14.52-4.27-3.79-11.02-5.69-20.25-5.69h-39.4v41.18zM450.77 928.74l47.8-124.48h17.75l50.95 124.48H548.5l-14.52-37.7h-52.05l-13.67 37.7h-17.49z m35.92-51.12h42.2l-12.99-34.47c-3.96-10.47-6.91-19.08-8.83-25.81-1.58 7.98-3.82 15.91-6.71 23.78l-13.67 36.5zM587.64 928.74V804.26h55.19c11.09 0 19.53 1.12 25.3 3.35 5.77 2.24 10.39 6.18 13.84 11.84 3.45 5.66 5.18 11.92 5.18 18.77 0 8.83-2.86 16.27-8.58 22.33-5.72 6.06-14.55 9.91-26.49 11.55 4.36 2.09 7.67 4.16 9.93 6.2 4.81 4.42 9.37 9.93 13.67 16.56l21.65 33.88h-20.72l-16.47-25.9c-4.81-7.47-8.78-13.19-11.89-17.15-3.11-3.96-5.9-6.74-8.36-8.32-2.46-1.58-4.97-2.69-7.51-3.31-1.87-0.4-4.92-0.59-9.17-0.59h-19.1v55.28h-16.47z m16.48-69.55h35.41c7.53 0 13.42-0.78 17.66-2.33 4.25-1.56 7.47-4.05 9.68-7.47s3.31-7.15 3.31-11.17c0-5.89-2.14-10.73-6.41-14.52-4.27-3.79-11.02-5.69-20.25-5.69h-39.4v41.18z" fill="#FFFFFF" p-id="3857"></path><path d="M547.99 114.84h-74.91v52.29h74.91v-52.29z m4.79 228.67l-4.91-27.08v-37.14h-74.74v36.9l-4.95 27.38c-23.23 38.33-47.37 84.59-47.37 111.36 0 51.6 40.16 93.43 89.69 93.43 49.54 0 89.69-41.83 89.69-93.43 0-26.78-24.16-73.08-47.41-111.42z m-42.25 167.54c-28.88 0-52.29-25.1-52.29-56.06s23.41-56.06 52.29-56.06 52.29 25.1 52.29 56.06-23.41 56.06-52.29 56.06z m37.46-314h-74.91v52.29h74.91v-52.29z m0-164.42h-74.91v52.29h74.91V32.63z" fill="#FA5B43" p-id="3858"></path></svg>
                ''',
                '''
               <svg t="1661223190969" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5291" width="200" height="200"><path d="M847.104 1024H176.896a76.8 76.8 0 0 1-74.496-78.848V78.848A76.8 76.8 0 0 1 176.896 0h521.216L921.6 236.288v708.864A76.8 76.8 0 0 1 847.104 1024z" fill="#F2ECF5" p-id="5292"></path><path d="M921.6 315.136H102.4V78.848A76.8 76.8 0 0 1 176.896 0h521.216L921.6 236.288z" fill="#A485BC" p-id="5293"></path><path d="M921.6 236.288H772.608a76.8 76.8 0 0 1-74.496-78.848V0l111.872 118.272z" fill="#F2ECF5" p-id="5294"></path><path d="M276.736 144.128v-1.536h-66.048v-17.408h86.016v17.92l-55.04 108.544h-20.48z m42.24 93.44l68.608-92.928v-1.536h-66.56v-17.92h91.136v14.08l-68.352 92.928v1.536h69.888v17.92h-94.72z" fill="#FFFFFF" p-id="5295"></path><path d="M425.728 463.36v409.6h172.544v-409.6z m151.04 140.032H512V646.4h64.768v43.264H512v43.008h64.768v43.264H512V819.2h-64.768v-43.264H512v-43.264h-64.768v-43.008H512V646.4h-64.768v-43.008H512v-43.008h-64.768V517.12H512v43.264h64.768z" fill="#A485BC" p-id="5296"></path></svg>
                ''',
                '''
               <svg t="1661223210167" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5860" width="200" height="200"><path d="M847.872 240.128v688c0 26.56-21.408 48-48 48h-576c-26.56 0-48-21.44-48-48v-832c0-26.592 21.44-48 48-48h432z" fill="#E9EDED" p-id="5861"></path><path d="M160 768.128v160c0 35.456 28.544 64 64 64h576c35.456 0 64-28.544 64-64v-160H160z" fill="#F17F53" p-id="5862"></path><path d="M847.872 240.128h-144c-26.56 0-48-21.44-48-48v-144" fill="#F17F53" p-id="5863"></path><path d="M367.744 191.808A16 16 0 0 0 352 208v64a16 16 0 1 0 32 0v-64a16 16 0 0 0-16.256-16.192z m128 0A16 16 0 0 0 480 208v64a16 16 0 1 0 32 0v-64a16 16 0 0 0-16.256-16.192zM432 224a16 16 0 0 0-16 16 16 16 0 0 0 16 16 16 16 0 0 0 16-16 16 16 0 0 0-16-16z m-0.256 63.552a16 16 0 0 0-15.744 16.256v32a16 16 0 1 0 32 0v-32a16 16 0 0 0-16.256-16.256zM368 320a16 16 0 0 0-16 16 16 16 0 0 0 16 16 16 16 0 0 0 16-16 16 16 0 0 0-16-16z m128 0a16 16 0 0 0-16 16 16 16 0 0 0 16 16 16 16 0 0 0 16-16 16 16 0 0 0-16-16z m-160 64a16 16 0 0 0-16 16v46.88A16 16 0 0 0 320 448v160c0 35.2 28.8 64 64 64h160c35.2 0 64-28.8 64-64h32c35.2 0 64-28.8 64-64v-32c0-35.2-28.8-64-64-64h-32v-48a16 16 0 0 0-16-16h-256z m16 32h224v192c0 18.016-13.984 32-32 32h-160c-18.016 0-32-13.984-32-32v-40.96a16 16 0 0 0 0-1.024V416z m256 64h32c18.016 0 32 13.984 32 32v32c0 18.016-13.984 32-32 32h-32v-8.96a16 16 0 0 0 0-1.024V480z" fill="#F17F53" p-id="5864"></path><path d="M590.72 799.552a16 16 0 0 0-0.224 0.064 16 16 0 0 0-1.568 0.256 16 16 0 0 0-12.544 18.24v59.136a16 16 0 0 0 0 5.12v61.44a16 16 0 1 0 32 0v-48h5.6l27.648 55.2a16 16 0 1 0 28.608-14.336L646.72 889.6a48 48 0 0 0 25.44-42.016c0-24.96-19.616-45.568-44.128-47.616a16 16 0 0 0-3.616-0.384h-32a16 16 0 0 0-0.256 0 16 16 0 0 0-1.376 0z m-126.592 0.256a16 16 0 0 0-14.4 8.864l-64 128a16 16 0 1 0 28.64 14.336l11.52-23.008h76.352l11.52 23.008a16 16 0 1 0 28.608-14.336l-64-128a16 16 0 0 0-14.24-8.864zM335.872 800a16 16 0 0 0-15.744 16.256V912c0 9.152-6.848 16-16 16a15.616 15.616 0 0 1-16-16 16 16 0 0 0-16.256-16.192 16 16 0 0 0-15.744 16.192c0 26.304 21.696 48 48 48 24.768 0 45.12-19.296 47.488-43.52a16 16 0 0 0 0.512-4.224v-96a16 16 0 0 0-16.256-16.256z m272.512 31.552h15.744c9.152 0 16 6.88 16 16 0 9.152-6.848 16-16 16v0.064a16 16 0 0 0-1.504 0.064 16 16 0 0 0-1.056 0.128h-13.184v-32.256z m-144.32 20.064L486.24 896H441.92l22.176-44.384z" fill="#E9EDED" p-id="5865"></path></svg>
                '''
            ],
        },
        {
            "type": ['mp4', 'wmv', 'avi', 'mkv'],
            "desc": "视频文件",
            "class": [
                '''
                 <svg t="1661222837121" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="32831" width="200" height="200"><path d="M594.944 0l335.124 341.32v563.2c0 65.996-52.5 119.48-117.294 119.48H209.546c-64.793 0-117.299-53.53-117.299-119.48V119.48C92.252 53.484 144.757 0 209.551 0h385.393z" fill="#627CFE" p-id="32832"></path><path d="M930.068 341.32H718.152c-64.748 0-123.208-59.49-123.208-125.492V0l335.124 341.32z" fill="#FFFFFF" fill-opacity=".4" p-id="32833"></path><path d="M519.68 606.628v66.422l120.832 73.4V533.407z" fill="#FFFFFF" opacity=".99" p-id="32834"></path><path d="M534.528 512.138H282.25a22.482 22.482 0 0 0-22.297 22.62v210.53c0 12.38 9.917 22.666 22.251 22.666h252.508a22.482 22.482 0 0 0 22.252-22.666V534.574a22.62 22.62 0 0 0-22.436-22.436zM356.25 719.36V560.548l127.078 79.4L356.25 719.36z" fill="#FFFFFF" opacity=".99" p-id="32835"></path></svg>
                ''',
                '''
               <svg t="1661222867129" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="33096" width="200" height="200"><path d="M852.537678 966.322357c7.542461 0 14.818718-3.016984 20.142807-8.341075s8.341075-12.600347 8.341075-20.142807V262.033969c0-6.743847-2.395841-13.22149-6.743848-18.368111L725.469393 67.793414c-5.412825-6.388908-13.39896-10.115771-21.740034-10.115771h-532.231543c-7.542461 0-14.818718 3.016984-20.142807 8.341075s-8.341075 12.600347-8.341075 20.142807v851.67695c0 7.542461 3.016984 14.818718 8.341075 20.142807s12.600347 8.341075 20.142807 8.341075h681.039862z" fill="#FFC466" p-id="33097"></path><path d="M881.02156 265.228423v-3.194454c0-6.743847-2.395841-13.22149-6.743848-18.368111L725.469393 67.793414c-5.412825-6.388908-13.39896-10.115771-21.740034-10.115771h-1.331023v207.55078h178.623224z" opacity=".15" p-id="33098"></path><path d="M324.565407 474.287695c0-103.553553 83.943154-187.496707 187.496707-187.496707 103.553553 0 187.496707 83.943154 187.496707 187.496707 0 103.553553-83.943154 187.496707-187.496707 187.496707-103.642288 0-187.496707-83.943154-187.496707-187.496707z m220.506066-79.062738c-82.523397-55.370537-104.795841-50.046447-104.79584 76.933102s22.272444 139.579896 104.884575 81.192374 82.612132-72.318891 82.612132-81.192374c-0.088735-8.873484-0.088735-21.562565-82.700867-76.933102z" fill="#FFFFFF" p-id="33099"></path><path d="M344.557366 775.25851h20.941421l8.696014 39.487001c1.597227 7.719931 2.57331 15.351127 3.993067 23.248527h0.532409c1.597227-7.808666 3.016984-15.706066 4.969151-23.248527l9.672097-39.487001h18.634316l9.938301 39.487001c1.863432 7.719931 3.283189 15.351127 4.969151 23.248527h0.798613c1.419757-7.808666 2.395841-15.528596 3.993068-23.248527l8.696014-39.487001h19.344194l-19.610399 79.861351h-24.668284l-8.429809-34.784055c-1.685962-7.542461-3.016984-14.818718-4.525477-23.248527h-0.709879c-1.597227 8.429809-2.75078 15.794801-4.436741 23.248527l-8.163605 34.784055h-23.958406l-20.675216-79.861351zM474.997574 775.25851h17.125823l1.419757 10.64818h0.532409c6.655113-7.010052 14.108839-12.689081 24.490815-12.689082 11.446794 0 18.101906 5.14662 21.917504 13.931369 7.276256-7.719931 14.996187-13.931369 25.378163-13.931369 16.948354 0 24.757019 11.979203 24.757019 32.033276v49.868977H569.677643v-47.206932c0-12.245407-3.549393-16.682149-11.091854-16.682149-4.525477 0-9.672097 3.016984-15.351127 8.962218v54.926863h-20.941421v-47.206932c0-12.245407-3.549393-16.682149-11.091855-16.682149-4.525477 0-9.672097 3.016984-15.351126 8.962218v54.926863h-20.852686v-79.861351zM603.130676 775.25851h21.118891l11.712998 39.753206c1.952166 7.808666 4.259272 16.14974 6.388908 24.22461h0.709879c1.952166-8.163605 4.259272-16.415945 6.388908-24.22461l11.712998-39.753206h20.054073l-26.620451 79.861351h-24.22461l-27.241594-79.861351z" fill="#FFFFFF" p-id="33100"></path></svg>
                ''',
                '''
               <svg t="1661222930039" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="35430" width="200" height="200"><path d="M192 384h640a42.666667 42.666667 0 0 1 42.666667 42.666667v362.666666a42.666667 42.666667 0 0 1-42.666667 42.666667H192v106.666667a21.333333 21.333333 0 0 0 21.333333 21.333333h725.333334a21.333333 21.333333 0 0 0 21.333333-21.333333V308.821333L949.909333 298.666667h-126.528A98.048 98.048 0 0 1 725.333333 200.618667V72.661333L716.714667 64H213.333333a21.333333 21.333333 0 0 0-21.333333 21.333333v298.666667zM128 832H42.666667a42.666667 42.666667 0 0 1-42.666667-42.666667V426.666667a42.666667 42.666667 0 0 1 42.666667-42.666667h85.333333V85.333333a85.333333 85.333333 0 0 1 85.333333-85.333333h530.026667L1024 282.453333V938.666667a85.333333 85.333333 0 0 1-85.333333 85.333333H213.333333a85.333333 85.333333 0 0 1-85.333333-85.333333v-106.666667z m107.925333-359.509333L131.093333 746.666667h48l24.96-68.736h114.816L343.829333 746.666667h48l-104.832-274.176h-51.072z m-18.432 168.576l43.392-120.192h1.536l43.008 120.192h-87.936z m176.256-168.576L491.285333 746.666667h54.144l97.536-274.176h-48.768l-75.264 223.488h-1.152l-75.264-223.488h-48.768z m278.016 0V746.666667h44.928V472.490667h-44.928z" fill="#EF3450" p-id="35431"></path></svg>
                ''',
                '''
               <svg t="1661222961579" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="35683" width="200" height="200"><path d="M535.3 76.86h57.37v91.07c108.16 0.61 216.43-1.12 324.49 0.5 23.27-2.22 41.49 15.89 39.16 39.16 1.72 189-0.41 378.13 1 567.25-1 20.43 2 43.1-9.71 61.21-14.77 10.72-34 9.31-51.29 10.12-101.18-0.5-202.37-0.31-303.65-0.31V947h-62.94c-154.2-28.13-308.71-53.83-463-80.95Q66.57 512 66.71 158C222.85 131 379 103.47 535.3 76.86z" fill="#477DA7" p-id="35684"></path><path d="M113.26 550.95V427.27h34.59l20.77 84.36 20.53-84.36h34.67v123.68h-21.46V453.6l-22.73 97.35h-22.25l-22.65-97.35v97.35zM247.1 550.95V427.27h23.11v54.92l46.7-54.92H348l-43.1 48.17 45.44 75.5h-29.92L289 492.9l-18.74 20.67v37.37zM391.48 550.95l-40.92-123.68h25.07l29 91.54 28-91.54h24.52l-41 123.67z" fill="#FFFFFF" p-id="35685"></path><path d="M808.091 507.612l9.358-32.084 32.083 9.358-9.358 32.083zM768.703 633.478l9.235-32.12 32.119 9.235-9.235 32.119zM618.84 590.41l9.23-32.12-32.11-9.23-6.66 23.14v9.72l29.54 8.49zM787.188 569.277l9.234-32.12 32.119 9.235-9.234 32.119z" fill="#FFFFFF" p-id="35686"></path><path d="M589.3 198.28v293.3l29.38-102.18c2.87-10 18.08-14 26.53-11.63l-4.62 16.06 32.12 9.24 4.62-16.07 149.89 43.1-4.62 16.06 32.12 9.24 4.62-16.06c8.4 2.51 19.16 14 16.3 23.95l-62.11 216c-2.87 10-18.08 14-26.53 11.63l4.62-16.06-32.12-9.24-4.62 16.06L605 638.59l4.62-16.06-20.3-5.84v198.82h333.89V198.28z" fill="#FFFFFF" p-id="35687"></path><path d="M605.167 516.892l9.234-32.119 32.12 9.234-9.235 32.12zM765.58 549.94l-72.7-75.93-29.23 101.65 101.93-25.72zM623.661 452.711l9.235-32.119 32.118 9.234-9.234 32.12z" fill="#FFFFFF" p-id="35688"></path></svg>
                '''
            ],
        }
    ]

    # 遍历
    for item in icon_class:

        # 判断类型匹配
        if file_type in item["type"]:

            # 匹配成功赋值--获取索引
            index = item["type"].index(file_type)
            # 获取icon类名
            item_class_icon = item["class"][index]

            return  item_class_icon


    # 没有匹配默认空白文件处理

    return icon_class[0]["class"][0]



def ast_tree_range(path, dir_list,picture_list=[], video_list=[], music_list=[]):
    '''
    按ast重排文件目录——>文件树AST
    算法：只专注第一层，其他层由于算法都一样直接调用即可，实现深度递归算法
    @param path:
    @param dir_list:
    @param picture_list:
    @param video_list:
    @param music_list:
    @return: dir_list,picture_list,music_list,video_list
    '''

    # 1.获取当前目录下的文件和目录
    path_tree = os.listdir(path)


    # 文件数
    file_count = 0

    # 2.遍历当前目录
    for item in path_tree:

        # 当前目录路径
        path_child = path + "/" + item
        print("path_tree——path")
        print(path)
        print(item)

        info = os.stat(path_child)

        # (1) 判断是否为目录
        if os.path.isdir(path_child):
            item_ = []
            # 起始对象树
            item_data_item = {
                  "name": item,
                  "type": "dir",
                  "path": path.replace("//", '/'),

                  "expanded": False, #是否展开
                  "icon": '''
                     <svg 
                     t="1661221138198" 
                     class="icon" 
                     viewBox="0 0 1180 1024" 
                     version="1.1" 
                     xmlns="http://www.w3.org/2000/svg" p-id="3975" width="200" height="200"><path d="M1099.433546 289.842983h-1.08787v-99.462424a128.679511 128.679511 0 0 0-93.246023-126.65918v-3.263611A60.454505 60.454505 0 0 0 944.023508 0.003264H729.246837A60.454505 60.454505 0 0 0 668.326102 59.836128H122.526051A126.65918 126.65918 0 0 0 0.062941 190.380559V890.502778a12.277393 12.277393 0 0 0 2.331151 6.216401v1.243281c0 72.110257 46.623011 126.03754 113.760147 126.03754H969.821575c67.603366 0 105.212595-68.225006 122.463109-130.544431L1174.652004 419.610365c18.182974-75.063048-7.459682-129.767381-75.218458-129.767382z m-897.337556 0a160.072339 160.072339 0 0 0-132.253942 78.637479v-124.32803a73.198128 73.198128 0 0 1 46.623011-54.859743H668.326102a60.609915 60.609915 0 0 1 60.454505-59.988274h215.242901a60.609915 60.609915 0 0 1 60.454505 60.609914v3.108201a126.50377 126.50377 0 0 1 90.604052 97.908324z" fill="#613F9D" p-id="3976"></path></svg>
                  ''',
                
                  "size":  get_dir_size(path),
                  "time": datetime.datetime.fromtimestamp(info.st_ctime),
                  "updateTime": datetime.datetime.fromtimestamp(info.st_mtime),
                  "dir_count": sum([len(dirs) for root,dirs,files in os.walk(path_child)]),
                  "file_count": sum([len(files) for root,dirs,files in os.walk(path_child)]),
                  "permission": info.st_mode,
                  "children": item_
            }

            # 为目录直接调用递归算法
            # （1）先添加当前目录信息
            dir_list.append(item_data_item)
            # （2）在调用递归算法求解当前目录的-------这里的item_参数为递归子目录存储的
            ast_tree_range(path_child+"/", item_,picture_list,video_list, music_list)


        # (2) 文件的直接append
        else:
            file_count +=1
            # 文件直接添加
            # 起始对象树
            item_data_item = {
                "name": item,
                "type": "file",
                "path": path.replace("//", '/'),

                "icon": "{0}".format(getIconClass(item)),  # 图标

                "size": info.st_size,
                "time": datetime.datetime.fromtimestamp(info.st_ctime),
                "updateTime": datetime.datetime.fromtimestamp(info.st_mtime),
                "permission": info.st_mode
            }

            #  添加进图片
            file_type = item.split('.')[-1]
            if file_type in ['png', 'jpg', 'gif']:
                if  item_data_item not in picture_list:
                    picture_list.append(item_data_item)
            # 添加进音乐中
            if file_type in ['mp3', 'wav']:
                if  item_data_item not in music_list:
                    music_list.append(item_data_item)
            # 添加进视频中
            if file_type in ['mp4', 'wmv', 'avi', 'mkv']:
                if item_data_item not in video_list:
                    video_list.append(item_data_item)
                    print("视频")
                    print(video_list)




            # 文件形式
            dir_list.append(item_data_item)

    return  dir_list,picture_list,music_list,video_list, file_count




def userFileSystem(request):

    # 获取用户token
    token = "dvsvhskjvdbsjkvbsjdvbj"  # request.headers["Authorization"]

    # 获取用户名
    user = User.objects.filter(token=token)
    username = user[0].username

    # 用户文件目录
    user_file_path = "static/files/{0}/".format(username)

    dir_list,picture_list,music_list,video_list, file_count = ast_tree_range(user_file_path,[])

    res = {
        "user":username,
        "file":dir_list,
        "img": picture_list,
        "music": music_list,
        "video":video_list,
        "file_count":file_count,
        "size": {
             "file":   show_size(compute_size(dir_list)),
             "img":    show_size(compute_size(picture_list)),
             "music":  show_size(compute_size(music_list)) ,
             "video":  show_size(compute_size(video_list))
        }
    }
    data = JsonResponse(res, json_dumps_params={"ensure_ascii": False}, safe=False)

    return HttpResponse(data)



def show_size(size):
    """
    按照字节的大小展示显示符号 具体是显示字节呢还是kb还是Mb还是Gb
    :param size: 字节
    :return:显示类型
    """
    if size < 1024:
        return str(size) + ' bytes'
    elif 1024 <= size < 1024 * 1024:
        return str(round(size / 1024, 2)) + ' kb'
    elif 1024 * 1024 <= size < 1024 * 1024 * 1024:
        return str(round(size / (1024 * 1024), 2)) + ' Mb'
    else:
        return str(round(size / (1024 * 1024 * 1024), 2)) + ' Gb'

def compute_size(data):

    size = 0
    if len(data) == 0:
        size += 0
    else:

        for i in data:
            # print("--------size----------")
            # print(i)
            size +=i["size"]
    return  size


def get_dir_size(path, size=0):
    """
    递归调用，统计文件大小
    :param path: 文件夹路径
    :return: 文件字节
    """

    # 列表显示出文件夹下的所有子文件及子文件夹
    dir_list = os.listdir(path)
    for file in dir_list:
        # 遍历出是不包含前缀的，所以需要拼接完整路径
        f = os.path.join(path, file)
        # 判断遍历出来的是否为文件夹，是文件夹继续递归调用
        if os.path.isfile(f):
            size += os.path.getsize(f)
        # 否则它就是文件夹，继续递归调用
        else:
            size = get_dir_size(f, size)
    return size



def postShell(requset):
    """
    执行shell命令
    @param requset:
    @return:
    """
    # 获取shell命令
    shell = requset.GET.get("shell")

    print("shell={0}".format(shell))

    # 执行命令
    exitcode, output = subprocess.getstatusoutput(shell)
    print("状态码:")
    print(exitcode)
    print("结果:")
    print(output)


    #获取命令所在位置
    cmd_path = os.getcwd()

    #分割结果
    result_shell = output.replace("\n\n", "&ensp;&ensp;").replace("\n", "<br>")

    res = {
        "code":       200,
        "path":      cmd_path,
        "cmd":       shell,
        "cmd_err":   result_shell,
        "cmd_status":exitcode,
        "hostname":  os.popen("hostname").read().replace("\n", ''),
        "result":    result_shell
    }
    data = JsonResponse(res, json_dumps_params={"ensure_ascii": False}, safe=False)

    return HttpResponse(data)






def login(requset):
    """
    用户登录接口
    @param requset:
    @return:
    """
    # 接受参数
    username = requset.GET.get("username")
    passwd = requset.GET.get("passwd")

    user = User.objects.filter(username=username)
    print("==========================================")
    print(user)
    if  user:

        user = user[0]
        # 密码判断
        if user.passwd != passwd:
            # 密码错误
            msg = "密码错误！"
            data = {
                "code": 300,
                "msg": msg,
            }
        else:
            # 生成token值
            token = hashlib.sha1(os.urandom(24)).hexdigest()
            # 写入token
            user.token = token
            user.save()

            data = {
                "code": 200,
                "msg": "登录成功!",
                "token": token
            }
    else:
        # 用户不存在
        msg = "用户不存在!"
        data = {
            "code": 400,
            "msg": msg,
        }
    data = JsonResponse(data, json_dumps_params={"ensure_ascii": False})

    return HttpResponse(data)







def getUserMiniApp(requset):
    '''
    获取用户应用信息
    @param requset:
    @return:
    '''
    # 1.获取token值
    token = "dvsvhskjvdbsjkvbsjdvbj"  # request.headers["Authorization"]


    # 2.获取所有微应用列表
    all_mini_app = glob("static/user/miniApp/*")

    # 用户uuid值
    user = User.objects.filter(token=token)
    uuid = user[0].uuid

    com_mini_app = []     # 公共微应用
    user_mini_app = []    # 用户自定义微应用

    for item in all_mini_app:
        # URL
        host = requset.META['HTTP_HOST']
        c = "http://{0}/{1}".format(host, item)

        #(1) 分割
        item1 = item.split("\\")[-1]
        print("item1=")
        print(item1)

        app_item = {
                "name": item1.split("_")[1],
                "icon": "{0}/icon.png".format(c),
                "url":  c,
                "mode": item1.split("_")[2],
                "label": item1.split("_")[-1]
        }

        pattern_com = re.compile('^{0}'.format("com_"))
        pattern_zs = re.compile('^{0}'.format(uuid))
        if pattern_com.search(item1):
            # 公共
            com_mini_app.append(app_item)
        elif pattern_zs.search(item1):
            # 专用
            user_mini_app.append(app_item)

    res = {
        "desc": "获取微应用",
        "data": {
            "com": com_mini_app,
            "user": user_mini_app
        }
    }

    data = JsonResponse(res, json_dumps_params={"ensure_ascii": False})

    return HttpResponse(data)




    print(all_mini_app)
    # 3.遍历获取用户和自定义的应用
    return HttpResponse(all_mini_app)



@csrf_exempt
def getUserWallpaper(request):
    """
    获取用户的壁纸信息
    @param request:
    @return:
    """
    # 1.获取token
    token =  "dvsvhskjvdbsjkvbsjdvbj"    # request.headers["Authorization"]

    # 2.获取公共壁纸
    all_wallpers = glob("static/user/wallpapers/*")

    # 用户域名
    host = request.META['HTTP_HOST']

    # 用户uuid值
    user = User.objects.filter(token=token)
    uuid = user[0].uuid

    com_wallpaper = []  # 公共壁纸
    user_wallpaper = [] # 专用壁纸
    for item in  all_wallpers:
        c = "http://{0}/{1}".format(host, item)
        citem = {
                    "name": item.split("_")[-1].split(".")[0],
                    "img": c,
                    "label": item.split("_")[1]
        }
        pattern_com = re.compile('^{0}'.format("com_"))
        pattern_zs = re.compile('^{0}'.format(uuid))

        if pattern_com.search(item.split("\\")[-1]):
            # 公共

            com_wallpaper.append(citem)
        elif pattern_zs.search(item.split("\\")[-1]):
            # 专用
            user_wallpaper.append(citem)

    # 5.封装数据返回：公共 + 专属壁纸
    res = {
        "desc": "获取壁纸信息",
        "data":{
            "com":com_wallpaper,
            "user":user_wallpaper
        }
    }
    data = JsonResponse(res, json_dumps_params={"ensure_ascii":False})

    return HttpResponse(data)





def index(request):

    # 数据库操作 实例化对应数据库中的一个记录  get all delete
    user = User()                  #创建一条记录实例

    user.username = "xskj"
    user.passwd = "fs123456"
    user.token = "dvsvhskjvdbsjkvbsjdvbj"
    user.status = 1
    user.time = "2022-7-18";
    user.save()                           #添加

    #删除
    user = User.objects.get(id=1)
    user.delete()

    return HttpResponse("add success")